【发布时间】:2017-09-01 13:00:57
【问题描述】:
在 PC 游戏中,我有用于新闻、虚拟货币商店和社交网络的游戏浏览器。它是用 Chromium Embedded Framework 的全新更新构建的。问题是当我打开浏览器窗口(网站在那里运行良好)然后关闭时,某些网站的 CEF 子进程没有完成。例如,如果是 Youtube 视频,我也可能会继续听到音频。我使用离屏渲染,不创建其他本机窗口,仅创建子进程。要关闭浏览器窗口,我删除所有对 CefBrowser 的引用并调用:
m_browser->GetHost()->CloseBrowser(true);
我还尝试了其他方法来关闭/销毁/完成该渲染子进程,例如在关闭之前加载“about:blank”,但这无济于事:进程保持清醒,音频继续播放。 重要提示:它只发生在某些网站上,我想这些网站使用了某些功能,而其他网站则没有。当我尝试在 CEF 设置中禁用 JavaScript 时,错误消失了,但我需要 JS。
- 有没有办法强制杀死浏览器子进程? (注意 GetWindowHandle 返回 0,因为它没有窗口)
- 是否有另一种方法可以正确终止我不知道的浏览器?
- 网站的哪些功能可能导致此类错误?
谢谢!
CEF 运行时配置:多进程、单线程消息循环、带子进程路径、无窗口渲染、无沙箱。
PC 配置:操作系统 Windows 8、VS 2010、Chromium Embedded Framework 版本 3.3071、build 1649、C++ 语言。
【问题讨论】:
-
拨打
CefShutdown(),问题是否依然存在?
标签: c++ chromium-embedded