visualstudio2008开发火狐浏览器插件.doc
文本预览下载声明
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
显示全部