结合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的多进程模式下崩溃一例的主要内容,如果未能解决你的问题,请参考以下文章
将 boost locale 与 Firebreath 一起使用
通过 Firebreath 框架来自 javascript 的 C# 类