0

我正在制作一个非常简单的 Delphi控制台应用程序 ( ),主窗体上{$APPTYPE CONSOLE}有一个。TChromiumWindow该应用程序的目的是检索网页、处理 HTML 并将一些 JSON 输出到控制台。由于网页的性质,这不能使用普通的 HTTP 请求来完成,这也需要运行一些 javascript。

一切都按预期工作,除了一个问题。chromium 组件也会向控制台输出一些错误消息,这使我的 JSON 无效!例如,我总是在启动时收到以下两条错误消息:

[0529/133941.811:ERROR:gpu_process_transport_factory.cc(990)] Lost UI shared context.
[0529/133941.832:ERROR:url_request_context_getter_impl.cc(130)] Cannot use V8 Proxy resolver in single process mode.

当然,最好的解决方案是首先不收到任何错误消息,但由于几个原因(主要与公司遗留代码有关),我不能例如禁用单进程模式。

所以下一个最好的办法是防止这些错误消息被打印到控制台。我试过设置

GlobalCEFApp.LogSeverity := LOGSEVERITY_DISABLE;

但这没有帮助。使用指定日志文件GlobalCEFApp.LogFile也无济于事。

那么我怎样才能完全阻止 Chromium 组件写入控制台呢?

4

1 回答 1

1

TChromium组件提供了一个OnConsoleMessage带有签名的事件:

 TOnConsoleMessage = procedure(Sender: TObject; const browser: ICefBrowser; 
                               const message, source: ustring; line: Integer; 
                               out Result: Boolean) of object;  

如果您处理此事件并将Result变量设置true为消息输出到控制台将被抑制。

于 2020-05-29T13:06:06.947 回答