用Visual Studio创建XPCOM组件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
一、开发环境设置
下载XULRunner和XULRunner SDK,当前版本是1.8.1.3。可以在http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/找到最新的版本。
解压到一个目录下,我的目录结构:
这个SDK里还需要两个dll文件,下载wintools.zip,从buildtools/windows/bin/x86里拷贝libIDL-0.6.dll、glib-1.2.dll到xulrunner/gecko-sdk/bin下。
二、XULRunner:Hello World!
在xulrunner创建tests目录,如下:
tests
|–application.ini
|–defaults
| |–preferences
| | |–prefs.js
|–chrome
| |–chrome.manifest
| |–HelloWorld
| | |–test.xul
application.ini
1 2 3 4 5 6 7 8 9 |
[App] Vendor=Duo Name=tsetApp Version=0.1 BuildID=20070530 [Gecko] MinVersion=1.8 MaxVersion=1.8 |
prefs.js:
1 |
pref("toolkit.defaultChromeURI", "chrome://tests/content/test.xul"); |
chrome.manifest:
1 |
content tests HelloWorld/ |
test.xul:
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="controller-example" title="Hello World" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <label value="Hello World!"/> </window> |
在命令行下,进入xulrunner目录:
三、创建XPCOM组件
参考:How to build a binary XPCOM component using Visual Studio
VC++ Express Project:xpcom-test.zip
主要有6步:
- 把”xulrunner/gecko-sdk/include”加到Additional Include Directories里
- 把 “xulrunner/gecko-sdk/lib”加到Additional Library Directories里
- 添加”nspr4.lib xpcom.lib xpcomglue_s.lib”库
- 添加”XP_WIN;XP_WIN32″宏
- 不使用]预编译头
- 自定义XPCOM IDL编译步骤(右击*.idl文件,属性->自定义->命令行,输入$(ProjectDir)xpidl-build.bat $(InputFileName))
四、测试XPCOM组件
在上面建立的tests下创建components目录,把生成的.xpt、.dll文件拷贝到components。
修改test.xul文件:(注意,要保存为uft-8编码。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="controller-example" title="Controller Example" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script> function doXPCOM() { try { const cid = "@starkravingfinkle.org/specialthing;1"; var obj = Components.classes[cid].createInstance(); obj = obj.QueryInterface(Components.interfaces.ISpecialThing); } catch(err) { alert(err); return; } var res = obj.add(3, 4); alert('3+4 = ' + res); var name = obj.name; alert('Name = ' + name); obj.name = 'New Name'; name = obj.name; alert('Name = ' + name); } </script> <button id="testXPCOM" label="测试XPCOM" oncommand="doXPCOM();"/> </window> |
修改application.ini的BuildID,我改为20070601,运行这个程序就可以测试了。
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=818