我的Firefox插件开发之旅(5)——编译和测试第一个Plugin例子:npruntime

作者: admin 分类: firefox 插件 发布时间: 2013-01-30 11:17 ė4,894 浏览数 6没有评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)

前几天一直在忙乎着研究和阅读XUL和FF的Extension相关资料,今天突然发现,我要做得事情似乎不是用Extension来实现的。因为原来的应用是一个ActiveX,网页会将一些参数通过ActiveX控件传递进来,而ActiveX接到这些参数以后,会和服务器进行一些数据交互,最后调起本地的执行程序。似乎我走了一些弯路,方向不对。我要做得事情应该是编写一个Plugin,而非Extension。

及时修正了下一步的研究计划,那么就让我们先来编译和测试Mozilla提供的一个小例子吧。原文连接在这里:

https://developer.mozilla.org/En/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio。文章中是以VS2003举例,我这里以VC6来进行测试,并且将步骤中需要注意的地方特别说明了一下。

1、先到这里下载相关源码:http://mxr.mozilla.org/seamonkey/source/modules/plugin/samples/npruntime/。不知道为什么Mozilla只提供了页面形式,没有打个包,害得我得一个个文件下载和保存,郁闷。

2、在VC6中新建一个Win32 Dynamic-Link Library工程,取名“nprt”。注意:建议工程以小写np开头,并且长度不超过8个字符,这样以后就会省事很多。

3、下一步,选择“An empty DLL project”,然后“Finish”。

4、将刚才下载的源码添加到工程中来。test.html不用添加,nprt.def建议也添加进来。

5、现在还不能编译,否则会出很多错误。打开Project Settings,转到C/C++标签页,在Category中选择Preprocessor,在Preprocessor Definitions中最后面添加:,XP_WIN32,MOZILLA_STRICT_API,XPCOM_GLUE,XP_WIN,_X86_。注:如果你使用VS 2005,需要添加全部的定义:WIN32;_WINDOWS;NPRT_EXPORTS;XP_WIN32;MOZILLA_STRICT_API;XPCOM_GLUE;XP_WIN;_X86_

6、在Additional include directories下面添加XULRunner SDK的include路径,可以是绝对路径,也可以是相对路径,看你当初怎么解压的了。例如:….xulrunner-sdkinclude

7、在Category中选择Precompiled Headers,选择Not using precompiled headers,OK,关闭Project Settings对话框。打开npp_gate.cpp,将下面的代码注释掉:
jref NPP_GetJavaClass (void)
{
  return NULL;
}

8、编译!……我靠,有错:Fatal error C1083: Cannot open include file: 'npapi.h': No such file or directory。我可是严格按照教程上面写的去做得啊。

9、在xulrunner-sdk目录下搜索了一下npapi.h,原来在xulrunner-sdksdkinclude下面,这好办,多加一条包含路径不就欧了?仿照第6步,添加该目录;

10、编译!OK,过了。

11、到输出目录下将nprt.dll复制到FF安装目录的plugins目录下,例如:C:Program FilesMozilla Firefoxplugins

12、如果此时FF开着也没关系,不用关(这点很不错)。在地址栏键入about:plugins,看看是不是有一个npruntime scriptable example plugin,如果有,那就表示欧了,FF认出了我们的插件;

13、在FF中打开test.html,嗯?怎么还提示安装缺失插件?用EditPlus打开test.html,噢,原来有这么一句:<embed type="application/x-java-mozilla-npruntime-scriptable-plugin" style="display: block; width: 50%; height: 100px;">。因为我们刚才没有添加名字为x-java-mozilla-npruntime-scriptable-plugin的插件,所以当然认不出来啦。

14、随便点一下页面上的按钮,看看简单的交互行为。

 

OK,第一个例子还算顺利,比想象中的要顺利。下面就该研究一下代码了,看看FF的插件和ActiveX的区别到底有多大。

附一些参考资料:
http://xinsync.xju.edu.cn/index.php/archives/2124
http://mqjing.blogspot.com/2008/09/plugin-firefox-plugin.html



只回答业务咨询点击这里给我发消息 点击这里给我发消息

王牌软件,兼职软件设计,软件修改,毕业设计。

本文出自 王牌软件,转载时请注明出处及相应链接。

本文永久链接: http://www.softwareace.cn/?p=149

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量