1.创建1Win32 控制台应用程序,应用程序类型为DLL,附加选项为空项目
2.项目-》右键-》配置属性-》常规-》字符集-》使用多字节字符集
3.复制sdk\samples\npruntime文件夹下的np_entry.cpp,npn_gate.cpp,npp_gate.cpp
其中np_entry.cpp
添加#include<stddef.h>
因为使用到offsetof
5.项目-》右键-》配置属性-》c/c++-》预处理器-》预处理器定义添加
XP_WIN
_X86_
6.新建一nptest.def文件
编辑nptest.def为
LIBRARY "nptest"
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
7.添加一资源Version,保存
在解决方案中右键nptest.rc,选择查看代码
BLOCK "080404b0" 改为
BLOCK "040904e4"
同时添加一value
VALUE "MIMEType", "application/test-plugin"
如果报printf找不到,就把#include <stdio.h>添上吧
如果报error C3861: “SubclassWindow”: 找不到标识符,需要在plugin.cpp文件添加#include "stdafx.h",并且在
#ifdef XP_WIN
#include <windows.h>
#include <windowsx.h>
#endif
之前,即最开始
9.编译生成整个项目
10.编辑注册表
HKEY_CURRENT_USER\Software\MozillaPlugins下
新建子项@mozilla.com.cn/test
并新建字符串值“Path”设值为E:\hbj\test3\nptest\Debug\nptest.dll
11.测试页面
<HTML>
<HEAD>
</HEAD>
<BODY>
<embed type="application/test-plugin">
</BODY>
</HTML>
12.总结
实现firefox查找注册表,再找到dll,加载,通过NP_GetEntryPoints进入c++代码
ie的 activex也是要通过注册表或者路径找到dll加载,只不过通过其他入口进入c++代码
参考:
NPAPI开发详解,Windows版
http://mozilla.com.cn/post/21666/
NPAPI——实现非IE浏览器的类似ActiveX的本地程序(插件)调用 http:///zhouyuqwert/article/details/7387516
我的Firefox插件开发之旅(5)——编译和测试第一个Plugin例子:npruntime
http://www.cppblog.com/epubcn/archive/2008/11/11/66612.html
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务