开发附带npapi插件chrome扩展

开发附带npapi插件chrome扩展

ID:20132760

大小:45.00 KB

页数:23页

时间:2018-10-10

开发附带npapi插件chrome扩展_第1页
开发附带npapi插件chrome扩展_第2页
开发附带npapi插件chrome扩展_第3页
开发附带npapi插件chrome扩展_第4页
开发附带npapi插件chrome扩展_第5页
资源描述:

《开发附带npapi插件chrome扩展》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、开发附带NPAPI插件的Chrome扩展1NPAPI插件1.1NPAPI简介NPAPI(NetscapePluginApplicationProgrammingInterface,网景插件应用程序接口)是网景公司当年制定的开发基于网景浏览器,用于在浏览器中执行外部应用程序的通用接口。该接口基于插件机制,制定了一系列的标准和API,因此也有NPAPI插件一说。同期的微软,也在IE中支持ActiveX为浏览器插件,不得不承认微软在这一点上,把浏览器和OS结合的更为紧密,这也可能是当年微软能够击溃网景的原因之一。但网景的影响深

2、远,除了微软特立独行之外,其他浏览器开发厂商奇迹般的都一致采用了NPAPI来对浏览器进行扩展(这包括后来从灰烬中重生的FireFox及新生的Chrome;当然,Chrome在不久前时间已经在尝试抛弃NPAPI了)。因此,在目前来看NPAPI几乎是IE之外的浏览器插件开发的统一标准。1.2准备工作根据参考资料,从ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/4.0.1/source/中下载了firefox早期的源代码,并从中抠出了NPAPI相关的部分(恩,资料

3、上说的不够详细)。解压源代码,把modulespluginbasepublic和modulespluginsdksamplesinclude两个目录中的文件复制出来放在一起(我创建了D:papi,把文件都放这了)。另外,资料里提到的三个文件在modulespluginsdksamplescommon下(记住位置,待会会用到)。1.3创建插件顺便提一下,本文以VS2003为范例。插件实现的功能:对浏览器(贴切点说是对javascript引擎)暴露对象Sample,而Sample又提供了一个sayH

4、ello的方法。这样一来,我们可以在浏览器中,使用javascript通过Sample.sayHello();来调用插件所提供的功能。1.3.1创建Win32DLL工程1.3.2引入NPAPI库在工程属性中,添加“附加包含目录”:D:papi(之前抠出来的部分)。1.3.3添加宏定义_X86_1.3.4添加模块定义文件(.def文件)创建sample.def文件,内容为:LIBRARY"sample"EXPORTSNP_GetEntryPoints@1NP_Initialize@2NP_Shutdown@31.3.5

5、编辑stdafx.h文件增加tchar头文件的引入:#include增加NPAPI头文件的引入://Mozilla-API#include#include#include"npruntime.h"1.3.6添加基础框架文件找到np_entry.cpp、npn_gate.cpp和npp_gate.cpp,复制到工程目录下,并添加到工程(恩恩,位置在modulespluginsdksamplescommon)。在编辑器里分别打开着三个文件,并在

6、文件头部加入:#include"stdafx.h"1.3.7编辑sample.cpp文件将文件代码修改为:#include"stdafx.h"#include"sample.h"NPErrorNS_PluginInitialize(){returnNPERR_NO_ERROR;}voidNS_PluginShutdown(){}nsPluginInstanceBase*NS_NewPluginInstance(nsPluginCreateData*aCreateDataStruct){if(!aCreateDataStr

7、uct)returnNULL;CPlugin*plugin=newCPlugin(aCreateDataStruct->instance);returnplugin;}voidNS_DestroyPluginInstance(nsPluginInstanceBase*aPlugin){if(aPlugin)delete(CPlugin*)aPlugin;}1.3.8编辑sample.h文件如果文件不存在,创建一个,并添加到工程。将文件内容修改为:#include"stdafx.h"#include"npruntime.h

8、"#include"pluginbase.h"boolIsStringNPIdentifier(NPIdentifiername){return*(char**)name==(char*)name+8;}char*CopyNPString(NPStringstr){char*r=newchar[str.UTF8Len

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。