FireFox插件和扩展开发(三)—— scriptable实例
2010-03-01 15:14
453 查看
依然是官网的例子,下载地址是http://mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/scriptable/
我要使用的平台是Windows
按照网页说明编译该项目:https://developer.mozilla.org/en/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio
需要说明的是,由于这个项目引用了xpidl语言,所以不应当再使用MS的MIDL编译器,需要修改一下设置,在将sIScriptablePluginSample.idl加入到项目后,选择该文件查看该文件属性,将"常规"->"工具"的值由"MIDL工具",修改为"自定义生成工具","自定义生成步骤"->"命令行"的值设置为"$(ProjectDir)script.bat $(InputFileName)","输出"的值改为"./$(InputName).h",如果你的项目的名称不是
npscript.bat,文件名随便起,内容是
还要一些共用的文件要下载到该项目下
http://mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/include/
http://mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/common/
然后,就可以编译该工程了
下面我们来看看如何使用这个程序调用我们之前写的xpcom-test组件
添加链接库的配置
"项目属性"->"链接器"->"输入"->"附加依赖项"的值设置为 xpcomglue_s.lib xpcom.lib nspr4.lib version.lib
"项目属性"->"链接器"->"常规"->"附加库目录"的值设置为 ../sdk/lib
idl文件中添加
nsScriptablePeer.cpp中的实现
plugin.h中加函数
plugin.cpp中
然后编译
接下来,将我们编写的plugin转成extension
步骤一、新建一个名为install.rdf的文件
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>npscript@myplugin.com</em:id>
<em:name>npscript</em:name>
<em:version>1.0</em:version>
<em:type>2</em:type>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
[说明]
1. 以邮件的格式比较好
2. 一定要有个名字标识
3. 版本信息可以自己描述,但是要满足 Toolkit version format
4. id{ec8030f7-c20a-464f-9b0e-13a3a9e97384}不可以修改,这个是FireFox的标识
步骤二、将生成的npscript.dll,nsIScriptablePluginSample.xpt放在一个Plugins的目录下,将Plugins和刚才的install.rdf文件放在目录npscript@myplugin.com(目录名要使用install.rdf中的em:id的值)下,用rar打个包,把后缀改为.xpi
目录结构是
npscript@myplugin.com
|-install.rdf
|-plugins/
||--npscript.dll
||--nsIScriptablePluginSample.xpt
|-comoponents
||--comp.xpt
||--test.dll
步骤三、把该目录npscript@myplugin.com放在Program Files/Mozilla Firefox/extensions下,重新启动FireFox
步骤四、将npscript项目下的test.html文件加个按钮和方法
13. 用FireFox打开该html,点按钮即可看到结果
我要使用的平台是Windows
按照网页说明编译该项目:https://developer.mozilla.org/en/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio
需要说明的是,由于这个项目引用了xpidl语言,所以不应当再使用MS的MIDL编译器,需要修改一下设置,在将sIScriptablePluginSample.idl加入到项目后,选择该文件查看该文件属性,将"常规"->"工具"的值由"MIDL工具",修改为"自定义生成工具","自定义生成步骤"->"命令行"的值设置为"$(ProjectDir)script.bat $(InputFileName)","输出"的值改为"./$(InputName).h",如果你的项目的名称不是
npscript.bat,文件名随便起,内容是
../sdk/bin/xpidl.exe -m header -I../sdk/idl %1 ../sdk/bin/xpidl.exe -m typelib -I../sdk/idl %1
还要一些共用的文件要下载到该项目下
http://mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/include/
http://mxr.mozilla.org/seamonkey/source/modules/plugin/tools/sdk/samples/common/
然后,就可以编译该工程了
下面我们来看看如何使用这个程序调用我们之前写的xpcom-test组件
添加链接库的配置
"项目属性"->"链接器"->"输入"->"附加依赖项"的值设置为 xpcomglue_s.lib xpcom.lib nspr4.lib version.lib
"项目属性"->"链接器"->"常规"->"附加库目录"的值设置为 ../sdk/lib
idl文件中添加
long run(in long a, in long b);
nsScriptablePeer.cpp中的实现
NS_IMETHODIMP nsScriptablePeer::Run(PRInt32 a, PRInt32 b, PRInt32 *_retval) { if(mPlugin) *_retval = mPlugin->run( a*a, b*b ); return NS_OK; }
plugin.h中加函数
long run(long a,long b);
plugin.cpp中
long nsPluginInstance::run(long a, long b) { PRInt32 lTemp = 0; ISpecialThing *nsspecial; nsCOMPtr<nsIServiceManager> serviceMgr; NS_GetServiceManager( getter_AddRefs(serviceMgr)); if(serviceMgr) { serviceMgr->GetServiceByContractID( "@starkravingfinkle.org/specialthing;1", NS_GET_IID( ISpecialThing ), (void**)&nsspecial); if(nsspecial) nsspecial->Add( a*a, b*b, &lTemp ); } NS_IF_RELEASE(nsspecial); return lTemp; }
然后编译
接下来,将我们编写的plugin转成extension
步骤一、新建一个名为install.rdf的文件
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>npscript@myplugin.com</em:id>
<em:name>npscript</em:name>
<em:version>1.0</em:version>
<em:type>2</em:type>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
[说明]
1. 以邮件的格式比较好
2. 一定要有个名字标识
3. 版本信息可以自己描述,但是要满足 Toolkit version format
4. id{ec8030f7-c20a-464f-9b0e-13a3a9e97384}不可以修改,这个是FireFox的标识
步骤二、将生成的npscript.dll,nsIScriptablePluginSample.xpt放在一个Plugins的目录下,将Plugins和刚才的install.rdf文件放在目录npscript@myplugin.com(目录名要使用install.rdf中的em:id的值)下,用rar打个包,把后缀改为.xpi
目录结构是
npscript@myplugin.com
|-install.rdf
|-plugins/
||--npscript.dll
||--nsIScriptablePluginSample.xpt
|-comoponents
||--comp.xpt
||--test.dll
步骤三、把该目录npscript@myplugin.com放在Program Files/Mozilla Firefox/extensions下,重新启动FireFox
步骤四、将npscript项目下的test.html文件加个按钮和方法
<input type=button value="a*a+b*b" onclick='Calc()' > function Calc() { alert(embed.run(2, 3)); }
13. 用FireFox打开该html,点按钮即可看到结果
相关文章推荐
- FireFox插件和扩展开发(一)——npruntime实例
- FireFox插件开发(三)—— scriptable实例
- Firefox扩展插件——网站开发常用类
- firefox 插件扩展开发 入门记录
- Firefox插件/扩展开发之Hello World无废话版
- 我的Firefox插件开发之旅(3)——我的第一个扩展(转载)
- Firefox插件开发(3)——我的第一个扩展
- Firefox扩展开发 (插件开发) Extension开发 入门教程 5步走 五步走
- IE与FireFox下扩展开发插件收藏
- 我的Firefox插件开发之旅(3)——我的第一个扩展
- FireFox插件和扩展开发(四)——常见问题的解决
- ie与FireFox下扩展开发插件收集(zz)
- FireFox 浏览器插件/扩展开发学习
- ie与FireFox下扩展开发插件收集
- 黄聪:Firefox火狐插件扩展开发教程
- ie与FireFox下扩展开发插件收集
- firefox附加组件扩展插件开发综述
- 网站开发人员常用Firefox扩展插件
- FireFox插件和扩展开发(二)——编写和使用XPCOM组件
- IE与FireFox下扩展开发插件收集[转]