专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » mozillaxpcom:基于Mozilla平台的扩展开发(续)----XPCOM组件篇 »正文

mozillaxpcom:基于Mozilla平台的扩展开发(续)----XPCOM组件篇

来源: 发布时间:星期四, 2009年1月15日 浏览:48次 评论:0
  本文举例源代码或素材下载

  在浅谈基于Mozilla ThunderBird扩展开发这篇入门文章中简单介绍了基于Mozllia平台进行扩展开发基础知识但仍然欠缺最为重要种武器---没错XPCOM!这篇文章就是为它准备

  XPCOM是什么?

  这个问题不多做解释了相信XPCOM对于了解COM技术人来说很快就可以上手开发了

  使用已有XPCOM

  XPCOM使用十分简单Mozilla平台已经为我们提供了许多功能强大XPCOM组件了如果你需要某方面功能组件请先看看Mozilla平台下是不是已经有对应别再“自己造轮子了“

  有关这方面也不打算再多说了有兴趣朋友可以阅读IBM developerworks下面这篇文章实战 Firefox 扩展开发相信通过这样个图片批量下载工具开发就会对于Mozilla平台下已有XPCOM组件使用有所了解

  So,what's next?

  没错自己如何开发XPCOM组件并在扩展中使用网上对于这方面资料不是很多而且没有特别完整举例这就是我写这篇文章所在通过个简单XPCOM组件开发全过程展示XPCOM组件内部细节

  项目目标:

  组件要实现功能非常简单就只提供个做加法接口供客户

  long Add(in long a, in long b);

  然后在扩展中这个加法接口

  准备工作

  0按照浅谈基于Mozilla ThunderBird扩展开发这篇文章建立起开发扩展基本环境 

  1、下载Gecko SDK

  http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/gecko-sdk-i586-pc-msvc-1.8b1.zip 我们需要使用它来对IDL定义进行解释

  2、创建GUID

  使用微软guidgen 生成GUID例如b7b04070-45fc -4635- b219-7a172f806bee

  4从C:mozilla-buildmoztools-180compatbin下拷贝libIDL-0.6.dllglib-1.2.dll到gecko-sdk-i586-pc-msvc-1.8b1gecko-sdkbin下否则运行xpidl会报错.

  开发XPCOM组件

  1创建接口文件定义

# "nsISupports.idl"
[scriptable, uuid(b7b04070-45fc -4635- b219-7a172f806bee)]
erface IMyComponent : nsISupports
{
 long Add(in long a, in long b);
};


  2、使用Gecko SDK xpidl.exe

  进入xpidl所在目录在CMD中输入命令

xpidl -m header -I ..idl IMyComponent.idl(这里应该是IDL定义文件实际路径)
xpidl -m typelib -I ..idl IMyComponent.idl


  如果上面执行有问题可以将

  gecko-sdk-i586-pc-msvc-1.8b1gecko-sdkbin;gecko-sdk-i586-pc-msvc-1.8b1gecko-sdkidl;gecko-sdk-i586-pc-msvc-1.8b1gecko-sdk;

  加入到环境变量PATH里面去  

  如果上述命令执行通过在gecko-sdk-i586-pc-msvc-1.8b1gecko-sdkbin就会得到IMyComponent.hIMyComponent.xpt 这2个文件

  2、创建新文件

  根据IMyComponent.h创建文件MyComponent.hMyComponent.cppMyComponentModule.cpp

/**//* MyComponent.h*/
#pragma _disibledevent= gEnigmailSvc.Add(3, 4);
    alert('Performing 3+4. Returned ' + res + '.');
    alert("创建结束");
  }
  catch(ex)
  {
    alert("error");
  }
}


  好了到此就完成了这个最简单XPCOM组件开发了enjoy it!



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: