文档介绍:开发附带NPAPI插件的Chrome扩展
NPAPI 插件 2
NPAPI 简介 2
准备工作 2
创建插件 2
创建 Win32 DLL 工程 2
引入 NPAPI库 2
添加宏定义_X86_ 2
添加模块定义文件(.de
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 *)aPlugin;
}
编辑 文件
如果文件不存在,创建一个,并添加到工程。将文件内容修改为:
#include ""
#include ""
#include ""
bool IsStringNPIdentifier(NPIdentifier name)
{
return *(char**)name == (char*)name + 8;
}
char* CopyNPString(NPString str)
{
char* r = new char[ + 1];
strncpy(r, , );
r[] = 0;
return r;
}
class CSample : public NPObject
{
public:
CSample(NPP npp) : mNpp(npp) { }
~CSample() { }
static NPObject* _Creator(NPP npp, NPClass *aClass) { return new CSample(npp); }
static void _Deallocate(NPObject *npobj) { delete (CSample*)npobj; }
static void _Invalidate(NPObject *npobj) { ((CSample*)npobj)->Invalidate(); }
static bool _HasMethod(NPObject *npobj, NPIdentifier name) { return ((CSample*)npobj)->HasMethod(name); }
static bool _Invoke(NPObject *npobj, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result