结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例

Posted 力为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例相关的知识,希望对你有一定的参考价值。


FireBreath是跨浏览器跨操作系统的插件方案,它封装了ActiveX和NPAPI的插件接口,使用统一的API来暴露JSAPI。Chrome和FireFox使用NPAPI,IE使用ActiveX。

值得注意的是Chrome和FireFox在多进程模式下和单进程模式下调用NPAPI的行为不一致,这也是最近遇到的这个崩溃bug的原因。


在Win32下,可以设置窗口过程:

lpfnOldProc = (WNDPROC)SetWindowLong(GetSafeHwnd(), DWL_DLGPROC, (DWORD)MyWndProc);

结合CallWindowProc可以对消息处理做些定制:

CallWindowProc


在IE下,没有任何问题。在Chrome/FireFox的单进程模式下也没有问题。但在Chrome/FireFox多进程下,当改变窗口大小的时候,窗口过程会被浏览器自动设置,导致渲染进程死循环。



以上是关于结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例的主要内容,如果未能解决你的问题,请参考以下文章

带有objective-c ++的Firebreath项目

firebreath demo搭建

将 boost locale 与 Firebreath 一起使用

通过 Firebreath 框架来自 javascript 的 C# 类

一旦 firebreath 测试页面 activex 关闭,Leakdetector 就会报告泄漏

在调试期间进入 c++/CLI 包装器 dll 和 c# dll,同时在 firebreath 上制作插件