NPAPI 插件研究经验总结

来源:互联网 发布:英雄连2英军单位数据 编辑:程序博客网 时间:2024/06/06 10:45

转http://blog.sina.com.cn/s/blog_71d9aee40100tpdz.html

1. 首先找到codeproject上面的一个例子npproject(Working on an NPAPI-browser plugin):

http://www.codeproject.com/KB/cross-platform/NPAPIBrowserPlugin.aspx

经过测试,这个例子用visual studio 10 和 xulrunner-3.6.22.en-US.win32.sdk编译,可以在firefox 3.6.22 版本上正常运行。

但是这个例子用最新的xulrunner-6.0.2.en-US.win32.sdk编译,在firefox 6.02 版本上运行会崩溃。如果禁用firefox 6.02 的 plugin-container (about:config -> filter = ipc -> dom.ipc.plugins.enabled = false),则该插件可以正常运行。


2. 经过测试,firebreath 可以编译出np**.dll插件,同时支持IE 9, firefox 6.02, chrome 14.0.835, safari 5.1. 即使不用它开发NPAPI插件,其中的代码也值得学习。

regsvr32 nphelloworld.dll 可以手动注册插件

Firefox 地址栏输入 about:plugins 查看已经安装的插件

C:\firebreath-FireBreath-615b970\build\projects\helloworld\gen\FBControl.htm 测试页面

查看.\src\3rdParty\gecko-sdk\includes\update.sh 发现他会去

http://npapi-sdk.googlecode.com/svn/trunk/headers/ 

更新最新的gecko-sdk头文件。所以我们也可以去该地址获取gecko-sdk头文件,而不用下载全部的gecko sdk了。


下面的地址介绍了在各种浏览器上调试插件的方法,一定要看!

http://www.firebreath.org/display/documentation/Debugging+Plugins


 


 3. 调试NPAPI插件


(A) safari 5.1.1

(1)用管理员权限启动VC,在项目属性->general->output directory设置为C:\Program Files\Safari\Plugins,这样编译出的插件dll可以直接找到

(2) 启动Safari浏览器,VC debug->attach to process->选择WebKit2WebProcess.exe, 然后再用浏览器打开测试页面


(b) Chrome 15.0

(1) 将插件安装到C:\Users\"你的用户名"\AppData\Local\Google\Chrome\Application\15.0.874.106\plugins (根据你自己的情况更改)

(2)用管理员权限启动VC, 以下面的方式启动chrome: chrome.exe --plugin-startup-dialog

(3)打开插件测试页面,这时chrome会弹出对话框告诉运行插件的进程PID,然后用VC "attach to process" 到这个进程

(4)如果调试时遇到下面的错误 SXS:  Invalid parameter(s) passed to FindActCtxSection,请安装微软的补丁Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update(http://www.microsoft.com/download/en/details.aspx?id=26347 6/7/2011)


NPAPI <wbr>插件研究经验总结


 4. NPAPI的调用顺序

NP_GetEntryPoints -> NP_Initialize



 


0 0
原创粉丝点击