Mozilla FireFox插件开发

FireFox的插件示例

首先在VS2015创建新项目nprt(np开头),选择C++->Win32项目,下一步,选择DLL,空项目即可。
解压拿到plugin文件夹后,放到nprt项目目录下。
在nprt中添加现有项,找到plugin\sdk\samples\npruntime,添加np_entry.cpp、npn_gate.cpp、npp_gate.cpp、nprt.def、nprt.rc、plugin.cpp、plugin.h、resource.h。

nprt.def是一个模块定义文件。它被用于导出一个DLL的函数,和__declspec(dllexport)很相似,但是.def文件并不是Microsoft定义的。一个.def文件中只有两个必需的部分:LIBRARY 和 EXPORTS。
nprt.def:

LIBRARY   NPRT
EXPORTS
    NP_GetEntryPoints   @1
    NP_Initialize       @2
    NP_Shutdown         @3

dll导出的函数必须是NP_GetEntryPoints、NP_Initialize、NP_Shutdown是这三个,这是火狐浏览器能够识别的在个接口,具体说明在插件的生命周期中说明。(引用http://blog.csdn.net/fancycow/article/details/7261191

nprt.rc、resource.h是资源文件,在项目中右键->添加->资源 就能获得。我们主要看的是nprt.rc,选中点击->查看代码

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "Comments", "\0"
            VALUE "CompanyName", " \0"
            VALUE "FileDescription", "nprt\0"
            VALUE "FileExtents", "rts\0"
            VALUE "FileOpenName", "nprt\0"
            VALUE "FileVersion", "1, 0, 0, 1\0"
            VALUE "InternalName", "nprt\0"
            VALUE "LegalCopyright", "Copyright ?1999\0"
            VALUE "LegalTrademarks", "\0"
            VALUE "MIMEType", "application/mozilla-npruntime-scriptable-plugin\0"
            VALUE "OriginalFilename", "nprt.dll\0"
            VALUE "PrivateBuild", "\0"
            VALUE "ProductName", "npruntime scriptable example plugin\0"
            VALUE "ProductVersion", "1, 0, 0, 1\0"
            VALUE "SpecialBuild", "\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

就看这一段。
BLOCK “040904e4” 代表英语(美国)
VALUE “MIMEType”, “application/mozilla-npruntime-scriptable-plugin\0” 一定要有,浏览器通过MIMEType检查是否有匹配插件

修改并保存后,我们来配置一下项目设置。右键->属性。平台Win32
常规:字符集使用多字节字符集。
VC++目录:包含目录添加E:\VSCode\nprt\plugin\base\public
C/C++->预处理器:预处理器定义添加:
XP_WIN32,MOZILLA_STRICT_API,XPCOM_GLUE,XP_WIN,X86
应用->确定。

好了,配置完成,编译试试。

问题:“printf”: 找不到标识符
解决:添加#include "stdio.h"

重新生成。ok,我通过了!将生成的nprt.dll放到FireFox的plugins文件夹内(没有就新建一个)
在FireFox浏览器地址栏键入:
about:plugins
可以看到npruntime scriptable example plugin

如果没有,没关系,在地址栏键入about:plugins,新建->布尔,名称plugin.expose_full_path,值是true
打开注册表编辑器regedit,在
HKEY_CURRENT_USER\Software\MozillaPlugins添加@mozilla.com.cn/test ,在右侧新建->新字符串值,名称Path,数据D:\FireFox\plugins\

OK!about:plugins

贴几个参考链接:
http://blog.csdn.net/willy16/article/details/8725338
http://www.cppblog.com/epubcn/category/8842.html
http://blog.csdn.net/fancycow/article/details/7261191

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值