首页 > 代码库 > NPAPI 随笔记一、 在chrome运行 npruntime demo

NPAPI 随笔记一、 在chrome运行 npruntime demo

在chrome运行 npruntime demo,codeproject上的demo 是用于firefox上的,在chrome上使用得修改部分代码。

 

必要库:windows platform sdk 和  NPAPI SDK

在codeproject下载 npruntime的demo。


编译时

 

缺少头文件npfunctions.h于是找了NPAPI SDK.

未包含 windows.h于是include一下

NP_GetMIMEDescription 方法定义与SDK有冲突

char *	NP_GetMIMEDescription(){	return NPP_GetMIMEDescription();}

 修改为

const char *    NP_GetMIMEDescription(){    return NPP_GetMIMEDescription();}

编译成功,后调试时,发现,插件加载失败。

经过多方查找资料,修改了以下部分代码终于成功了。

修改代码

 NP_GetEntryPoints方法里面的

 

  if(pFuncs->size < sizeof(NPPluginFuncs))    return NPERR_INVALID_FUNCTABLE_ERROR;

 

追踪发现Chrome 浏览器传递过来的pFuncs->size为80和实际定义的NPPluginFuncs的大小为84 所以严重不通过。注释屏蔽!

NP_Initialize方法里面的

  if(pFuncs->size < sizeof(NPNetscapeFuncs))    return NPERR_INVALID_FUNCTABLE_ERROR;

追踪发现Chrome 浏览器传递过来的pFuncs->size和实际定义的NPNetscapeFuncs的大小不等所以严重不通过。注释屏蔽!

CPlugin构造函数内

  NPN_InvokeDefault(m_pNPInstance, NPVARIANT_TO_OBJECT(barval), &arg, 1,      &rval);

调用时抛出异常,注释屏蔽!

做了以上处理好调试正常。

 

NPAPI 随笔记一、 在chrome运行 npruntime demo