- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开发附带NPAPI插件的Chrome扩展
开发附带NPAPI插件的Chrome扩展
1 NPAPI插件 2
1.1 NPAPI简介 2
1.2 准备工作 2
1.3 创建插件 2
1.3.1 创建Win32 DLL工程 2
1.3.2 引入NPAPI库 2
1.3.3 添加宏定义_X86_ 2
1.3.4 添加模块定义文件(.def文件) 2
1.3.5 编辑stdafx.h文件 3
1.3.6 添加基础框架文件 3
1.3.7 编辑sample.cpp文件 3
1.3.8 编辑sample.h文件 4
1.3.9 添加Version资源 8
1.3.10 编译输出 8
1.4 需要注意的问题 8
1.4.1 库文件的捆绑 8
1.4.2 谨记MIMEType 8
1.4.3 无效的NPN_CreateObject? 8
2 Chrome扩展 9
2.1 简介 9
2.2 开始编写 9
2.2.1 准备一个图标文件(.png) 9
2.2.2 准备NPAPI插件(.dll) 9
2.2.3 编写manifest.json 9
2.2.4 编写background.html 10
2.2.5 编写background.js 10
2.3 安装与测试 10
2.4 发布 10
3 参考资料 11
NPAPI插件
NPAPI简介
NPAPI(Netscape Plugin Application Programming Interface,网景插件应用程序接口)是网景公司当年制定的开发基于网景浏览器,用于在浏览器中执行外部应用程序的通用接口。该接口基于插件机制,制定了一系列的标准和API,因此也有NPAPI插件一说。同期的微软,也在IE中支持ActiveX为浏览器插件,不得不承认微软在这一点上,把浏览器和OS结合的更为紧密,这也可能是当年微软能够击溃网景的原因之一。
但网景的影响深远,除了微软特立独行之外,其他浏览器开发厂商奇迹般的都一致采用了NPAPI来对浏览器进行扩展(这包括后来从灰烬中重生的FireFox及新生的Chrome;当然,Chrome在不久前时间已经在尝试抛弃NPAPI了)。因此,在目前来看NPAPI几乎是IE之外的浏览器插件开发的统一标准。
准备工作
根据参考资料,从/pub//firefox/releases/4.0.1/source/中下载了firefox早期的源代码,并从中抠出了NPAPI相关的部分(恩,资料上说的不够详细)。
解压源代码,把modules\plugin\base\public和modules\plugin\sdk\samples\include两个目录中的文件复制出来放在一起(我创建了D:\npapi,把文件都放这了)。
另外,资料里提到的三个文件在modules\plugin\sdk\samples\common下(记住位置,待会会用到)。
创建插件
顺便提一下,本文以VS2003为范例。
插件实现的功能:对浏览器(贴切点说是对javascript引擎)暴露对象Sample,而Sample又提供了一个sayHello的方法。这样一来,我们可以在浏览器中,使用javascript通过Sample.sayHello();来调用插件所提供的功能。
创建Win32 DLL工程
引入NPAPI库
在工程属性中,添加“附加包含目录”:D:\npapi(之前抠出来的部分)。
添加宏定义_X86_
添加模块定义文件(.def文件)
创建sample.def文件,内容为:
LIBRARY sample
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
编辑stdafx.h文件
增加tchar头文件的引入:
#include tchar.h
增加NPAPI头文件的引入:
// Mozilla-API
#include npfunctions.h
#include npruntime.h
#include npruntime.h
添加基础框架文件
找到np_entry.cpp、npn_gate.cpp和npp_gate.cpp,复制到工程目录下,并添加到工程(恩恩,位置在modules\plugin\sdk\samples\common)。
在编辑器里分别打开着三个文件,并在文件头部加入:
#include stdafx.h
编辑sample.cpp文件
将文件代码修改为:
#include stdafx.h
#include sample.h
NPError NS_PluginInitialize()
{
return NPERR_NO_ERROR;
}
void NS_PluginShutdown()
{
}
nsPluginInstanceBase * NS
您可能关注的文档
最近下载
- 白马湖景区入口节点景观方案设计.pptx
- 《中国神话传说》分享课教学反思-郭丽媛.docx VIP
- 数学作业分层设计的实效性南阳完小马晓娟.ppt VIP
- 2024年国开电大《行政法与行政诉讼法》形考任务3-4网考题库(附答案).pdf VIP
- 2023年中国小微信贷行业市场深度分析报告.pdf
- (必会)企业人力资源管理师(三级)近年考试真题题库汇总(300题).docx
- 被告(第三人)信息表.doc VIP
- 小班语言:秋叶飘.ppt
- Unit 3 My School (Period 3)课件-人教版英语七年级上册2024.pptx VIP
- 2022年银行工作人员”屡查屡犯“问题整治专题培训考核试题及答案.docx
文档评论(0)