结合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多进程下,当改变窗口大小的时候,窗口过程会被浏览器自动设置,导致渲染进程死循环。



版权声明:本文为aiwz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/aiwz/p/6333109.html