- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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字符内。本例定义为npdemoLocation项定义到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
您可能关注的文档
最近下载
- DB5111∕T 25-2022 嘉州菜 乐山甜皮鸭制作工艺规范.docx VIP
- 幼儿园保育技能基本功大赛试题及答案.doc VIP
- 混凝土结构课程设计-山西建筑职业技术学院精品课程.doc VIP
- 保育技能大赛答辩试题及答案.docx VIP
- 婴幼儿保育技能大赛试题附答案.doc VIP
- 华东交通大学211翻译硕士英语2020年考研真题试题.pdf VIP
- 华东交通大学211翻译硕士英语2019年考研真题试题.pdf VIP
- 2025年高级财务管理题库含参考答案.pdf VIP
- 中宁县大战场清真牛羊交易市场建设项目可行性研究报告.doc VIP
- 2025年10月自考行政管理学00277试题及解析.docx VIP
原创力文档


文档评论(0)