visualstudio2008开发火狐浏览器插件.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
visualstudio2008开发火狐浏览器插件

1. 准备工作 开发工具 本例使用的是visual studio 2008 英文版,下图是关于信息 Windows SDK 本例使用Windows7操作系统 这里下载SDK NPAPISDK 本例使用的是Firefox4.0.1提供的SDK。 首先,从这里下载mozilla源码。然后,解压firefox-4.0.1.source.tar.bz2文件。 将 \firefox-4.0.1.source\mozilla-2.0\modules\plugin 目录解压缩出来,里面有我们开发NPAPI插件所需的所有资源。 为了方便大家使用,这里提供plugin.zip的下载。 本例将plugin目标解压到D:\code\下(后面统一使用绝对路径,以避免异意) 2. 创建Plugin 本着“有图有真相”的原则,下面将连续多图并配文字一步步创建、调试Plugin。图中画红圈的代表需要填写或者需要选择的地方。 创建项目 新建项目   Name项一定要以np开头,为了将来适应不同操作系统,最好全小写,不要太长,尽量控制在8字符内。 本例定义为npdemo Location项定义到plugin\sdk\samples以便项目属性中用相对路径引用NPAPI的SDK 本例定义为d:\code\plugin\sdk\samples   向导   选择Application type为DLL 选择Empty project   添加文件 首先,添加NPAPI SDK中的Common文件   一共3个文件   然后,添加def文件   命名最好与项目一致   编辑npdemo.def为 LIBRARY npdemo EXPORTS NP_GetEntryPoints @1 NP_Initialize @2 NP_Shutdown @3   现在,添加资源   选择Version   自动生成了resource.h和npdemo.rc。由于要在版本信息中加项,所以手工npdemo.rc   选择“Y”   在图中的BLOCK中添加。注意!BLOCK 一定要是040904e4 VALUE MIMEType, application/demo-plugin 这里顺便说一下,MIMEType是plugin的唯一标示,需要自己定义 通常的格式是application/“+ [plugin name] 本例中定义为application/demo-plugin   下面添加最关键的部分:Plugin实现类   类名可以随便起,本例命名为CPlugin 但是一定要继承自nsPluginInstanceBace   修改Plugin.h #pragma once #include pluginbase.h class CPlugin : public nsPluginInstanceBase { private: NPP m_pNPInstance; NPBool m_bInitialized; public: CPlugin(NPP pNPInstance); ~CPlugin(); NPBool init(NPWindow* pNPWindow) { m_bInitialized = TRUE; return TRUE;} void shut() { m_bInitialized = FALSE; } NPBool isInitialized() { return m_bInitialized; } };   修改Plugin.cpp 其中实现了4个全局函数 #include plugin.h ////// functions ///////// NPError NS_PluginInitialize() { return NPERR_NO_ERROR; } void NS_PluginShutdown() { } nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct) { if(!aCreateDataStruct) return NULL; CPlugin * plugin = new CPlugin(aCreateDataStruct-instance); return plugin; } void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin) { if(aPlugin) delete (CPlugin *)aPl

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档