使用NPAPI编写浏览器插件的源码实例(windows 7/linux)

来源:清泛原创     2015-08-18 10:58:47    人气:     我有话说( 0 人参与)

使用NPAPI编写浏览器插件的源码实例用于种种原因,最近对制作浏览器(chrome,firefox)的插件非常感兴趣搜了一下,讲的几乎全都是在讲的方法和A...

用于种种原因,最近对制作浏览器(chrome,firefox)的插件非常感兴趣,搜了一下,讲的几乎全都是在讲的方法和API,找个简单可以运行的代码实例还真是难!

不过最终还算幸运,终于找一个例子(http://geeklu.com/2010/10/getting-started-with-npapi-plugin/comment-page-1/)。

很遗憾这个例子在我的linux机器上无法正常工作.所以我以此例子为基础写了个新例子,顺路我还写了个chrome的扩展作为演示。

关于NPAPI和chrome的扩展:

NPAPI

[1] http://colonelpanic.net/2009/05/building-a-firefox-plugin-part-two/

[2] http://rintarou.dyndns.org/2010/04/23/scriptable-plugin-%E6%8E%A2%E8%A8%8E-20090408/

[3] http://blogold.chinaunix.net/u3/94039/showart_2004756.html

[4] https://developer.mozilla.org/en/Plugins

[5] 如何在chrome的扩展中使用:http://code.google.com/chrome/extensions/npapi.html

[6] 如何编写chrome的扩展:http://code.google.com/chrome/extensions/getstarted.html

 

插件的功能

提供网页的javascript可以调用本机上的程序的能力。

 

关于源码的说明

npapi/npapi.h

npapi/npfunctions.h

npapi/npruntime.h

npapi/nptypes.h

直接来自:http://code.google.com/p/npapi-headers/

 

plugin_exec.c中的一些函数

char* NP_GetMIMEDescription()

return的字符串的格式必须是:"text/html:htm,html:HTML Document;application/x-texinfo:tex,texi,texinfo:TexInfo Document;"

详情请看[3]

 

NPError NP_GetValue (void *future,

     NPPVariable variable,

     void *value)

一定要处理 variable为NPPVpluginNeedsXEmbed的case,否则chrome不会启用插件(firefox还算正常)

 

插件的演示方法

$cp libplugin_exec.so ~/.mozilla/plugins

$firefox wkt.html 

$google-chrome wkt.html ###在网页输入一个命令(必须运行后能跳出窗口,例如gnome-terminal,否则看不见效果),然后点"Run"按钮。

使用NPAPI编写浏览器插件的源码实例 - wkt55555 - wkt的博客

使用NPAPI编写浏览器插件的源码实例 - wkt55555 - wkt的博客

  

chrome扩展的演示方法

扩展在chrome_extension目录下

加载扩展(加载方法看[6]的第4步),

然后页面上每个link的右键菜单会多出一个菜单项"save link to /tmp/link.log",

点击该菜单项后link的url就会被保存到/tmp/link.log

使用NPAPI编写浏览器插件的源码实例 - wkt55555 - wkt的博客

 

 

本例源码地址:NpapiPlugin.zip

注意此例在debian sid/ubuntu10.10/windows 7 编译/测试。

NPAPI 浏览器插件

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: