我正在做一个非常简单的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组件完全不向控制台写入呢?
该 TChromium
组件提供了一个 OnConsoleMessage
签名的事件。
TOnConsoleMessage = procedure(Sender: TObject; const browser: ICefBrowser;
const message, source: ustring; line: Integer;
out Result: Boolean) of object;
如果你处理这个事件,并设置了 Result
变量到 true
抑制向控制台输出信息。