My Firefox plugins 开发

        最近在做一个关于非IE下的浏览器的插件的开发,感觉开始还是挺难的,但是找到方法后,还是挺好做的。

闲话少说,网上也有很多的开发过程介绍,感兴趣的,可以自己去看看。

开发之前,先要备齐:mozilla-win32-1.7   或者firefox-4.0.1.source 具体地址在其官网,自己找找,然后下载npruntime 开发实例。

我们需要的就是修改它就可以了,当然你也可以自己新建项目,然后导入也是Ok的。然后我们导出附加头文件 以VS 2010为例  右击“项目”, 选择“属性”,---->C/C++/常规,你会看到有一个附加包含目录,在此点选,找到你下载的API文件的路径。例如:D:\Download\xulruner-sdk\include;这个是我的路径。

依旧再此目录下,设置 “预编译头”   -------“不使用预编译头”;

在“配置属性”------->常规---我们可以设置输出目录为我们forefox的安装路径下的plugins目录下(如果没有,可以手动新建的,文件夹名字也写对)。

设置C/C++  下的于处理器  下的预处理器定义,设置为:WIN32  ,NDEBUG,XP_WIN,_WINDOWS,_USRDLL,NPRT_EXPORTS,XP_COM_GLUE,_X86_,MOZILLA_STRICT_API.这样就OK啦,可以编译生成***.dll 啦,然后打开测试的网页。

附录测试网页源码:

<HTML>
<HEAD>
</HEAD>
<script>
function GetVersion(){
try
{
var PLUGIN = document.getElementById('plugin');
alert(PLUGIN);
alert( "Version from plugin: " + PLUGIN.sPluginType_id );
}
catch (err)
{
alert(err);
}
}
</script>
<BODY>
<embed type="application/nprt" width = 100 height = 100 />
<hr/>
<br>
<input type="button" value="GetVersion" οnclick="GetVersion()"/>
<hr>
<br>
</BODY>
</HTML>


添加我们自己的属性或者方法,可以在ScriptablePluginObject 里面的HasMethod 里面,例如:
if( !strcmp( "Add", pFunc ) )
{
    return true;
}    
添加一个Add 函数,函数的实现 我们放在 Invoke 里面实现 ,即可 例:
if( !strcmp( "Add", pFunc ) )
{
int sum = 0;

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

}

INT32_TO_NPVARIANT( sum,*result);
return true;
}

这样就OK啦。`  之于在JS中的调用,很简单的,获得控件ID  ,然后调用 PLUGIN .Add() 即可。

之于属性的话,参见他的GetVersion即可。~~


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值