HTML与C++交互源码工程(NPAPI)
1.本demo的使用前提:html与dll放在一起。接入lomox中则无需。2.在html中写入:- <embedtype="application/npcodeproject"width=800height=200id="plugin">
复制代码 3.javascript 访问plugin:- PLUGIN = document.getElementById('plugin');
复制代码 4.在C++中使用Netscape Plug-in API 的指针启动插件就是代码中的:- NPError OSCALL NP_GetEntryPoints(NPPluginFuncs* pFuncs)
复制代码 函数:pFuncs为其的指针5.检查是否有返回信息:- if( !strcmp( "Name", pProp ) )
- {
- //allocating Memory
- for the string with invocation of Browser-API
- char *p =
- (char*) NPN_MemAlloc( m_pszName );
- STRINGZ_TO_NPVARIANT(
- p, *result);
- return true;
- }
复制代码 6.调用接口
- <p>bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args,
- uint32_t argCount, NPVariant *result)
- {
- char *pFunc =
- NPN_UTF8FromIdentifier(name);</p>
- <p> if( !strcmp( "Add", pFunc ) )
-
- {
- int sum = 0;</p>
- <p> for( unsigned int i = 0; i <
- argCount; i++ )
-
- {
- if(
- args[i].type == NPVariantType_Int32
- )
-
- {
-
- sum +=
- args[i].value.intValue;
-
- }
- else if(
- args[i].type == NPVariantType_String
- )
-
- {
-
- CNPString
- s(args[i].value.stringValue);
-
- sum += atoi( s
- );
-
- }
- else
- return false;//an error happenend</p>
- <p>
- }
- ..
- }</p>
复制代码 7.示例中为编译后的dll,html,以及一份工程。环境:vs2008与vs2010 下载地址
http://bbs.lomox.hk/forum.php?mod=viewthread&tid=36&fromuid=4
posted on 2012-05-28 13:43
爬 阅读(4253)
评论(0) 编辑 收藏 引用