




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.QT浏览器插件开发入门1 简介主流的浏览器插件开发主要分为两种: l ActiveX控件,适合IE内核的浏览器l NPAPI插件,适合Netscape浏览器的开发NPAPI全称为 Netscape Plugin Application Programming Interface在QT4.7.2下有这两种模式的开发支持,相关资料可在Qt文档网站上找到,ActiveX 开发有QT提供ActiveQT server library支持库(QT4.7.2),NPAPI开发QT4.7.2本身无此支持,需要下载相关的API,下载qt-solutions-qt-solutions-master.tar.g
2、z,解压后qtbrowserplugin目录就是。下面是完成的一个测试,首先做了一个功能库imagedemo,主要完成一个图片的显示功能,现在将它分别封装为ActiveX控件和NPAPI插件,供不同浏览器调用。2 ActiveX2.1 创建QT Application工程工程名称:npgraphapp,创建时注意必须选择ActiveQT server library,如下图2.2 创建资源文件文件npgraphapp.rc中就一句话:1 TYPELIB npgraphapp.rc2.3 修改类npgraphapp.h在文件中增加Q_CLASSINFO信息,代码如下:#ifndef NPGRAP
3、HAPP_H#define NPGRAPHAPP_H#include class npgraphapp : public QWidgetQ_OBJECTQ_CLASSINFO(ClassID, 4CFCDEDD-F2F6-42E9-8671-D63D7B15AA2C);Q_CLASSINFO(InterfaceID, 615B202B-C4F2-4C9F-B9F5-2F9D52ECF0BC);Q_CLASSINFO(EventsID, C9C4EB5F-F926-4770-AA7F-50702B53DB3E);public:npgraphapp(QWidget *parent = 0);npg
4、raphapp();#endif / NPGRAPHAPP_H2.4 修改main.cpp在文件中增加QAXFACTORY_BEGIN宏,代码如下:#include npgraphapp.h#include #include QAXFACTORY_BEGIN(5E2C9F73-03E9-4351-9ECC-C46697D1A8D5, 443A7F7F-FFE1-498A-AECB-D3EBCD5810CB)QAXCLASS(npgraphapp)QAXFACTORY_END()int main(int argc, char *argv)QApplication a(argc, argv);if
5、 ( !QAxFactory:isServer() ) npgraphapp* w = new npgraphapp();w-show();return a.exec();2.5 修改工程属性增加生成事件,如下图:在命令行中编辑(注册ActiveX控件)C:Qt4.7.2binidc.exe $(TargetPath) /idl $(IntDir)npgraphapp.idl -version 1.0if errorlevel 1 goto VCReportErrormidl $(IntDir)npgraphapp.idl /nologo /tlb $(IntDir)npgraphapp.tl
6、bif errorlevel 1 goto VCReportErrorC:Qt4.7.2binidc.exe $(TargetPath) /tlb $(IntDir)npgraphapp.tlbif errorlevel 1 goto VCReportErrorC:Qt4.7.2binidc.exe $(TargetPath) /regserver2.6 注册和调用工程编译后自动生成事件会注册组件,注意看编译信息是否注册成功测试组件 问题:如果仅仅在界面上绘制可创建QT Active库,如果界面上需调用其它QT控件或自定义的QT控件,需创建为可执行文件才可以3 NPAPI3.1 创建QT Li
7、brary工程名称:npgraphdemo下载qt-solutions-qt-solutions-master.tar.gz,解压后qtbrowserplugin目录就是NPAPI的封装支持,使用src中的文件,将下列的五个文件拷贝到工程目录下,在工程中加入qtnpapi.hqtbrowserplugin.hqtbrowserplugin_p.hqtbrowserplugin.cppqtbrowserplugin_win.cpp(windows操作系统)3.2 增加资源文件文件名称是npgraphdemo.rc,内容如下1 VERSIONINFO FILEVERSION 1,0,0,1 PRO
8、DUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK StringFileInfo BEGIN BLOCK 040904e4 BEGIN VALUE Comments, 0 VALUE CompanyName, Nokia0 VALUE FileDescription, grapher0 VALUE FileExtents, g1n0 VALUE
9、FileOpenName, Graphable data (*.g1n)0 VALUE FileVersion, 1, 0, 0, 10 VALUE InternalName, npgraphdemo0 VALUE LegalTrademarks, 0 VALUE MIMEType, application/grapher VALUE OriginalFilename, npgraphdemo.dll0 VALUE PrivateBuild, 0 VALUE ProductName, grapher npapi example0 VALUE ProductVersion, 1, 0, 0, 1
10、0 VALUE SpecialBuild, 0 END END BLOCK VarFileInfo BEGIN VALUE Translation, 0x409, 1252 END END注意VALUE MIMEType, application/grapher这句,其中的MIMEType后面字符串为自定义类型3.3 新建模块定义文件在工程选择“新建项”,创建npgraphdemo.def,如下图文件内容:LIBRARYnpgraphdemoEXPORTSNP_GetEntryPoints 1NP_Initialize 2NP_Shutdown 33.4 修改npgraphdemo.h在文件增
11、加Q_CLASSINFO定义,注意Q_CLASSINFO(MIME, application/grapher:g1n:Graphable ASCII numeric data),此处的定义要和资源文件的MIMEType定义的一致#ifndef GRAPHFROM_H#define GRAPHFROM_H#include #include QT_BEGIN_NAMESPACEclass QVBoxLayout;QT_END_NAMESPACEclass npgraphdemo : public QWidget, public QtNPBindableQ_OBJECTQ_CLASSINFO(Cla
12、ssID, 2e5b2715-46b2-4831-ba9b-6a3b195d5ec8)Q_CLASSINFO(InterfaceID, 94581136-3c0c-46cc-97a1-066061356d43)Q_CLASSINFO(EventsID, 8c191b77-1894-45c7-9d6b-201dede95410)Q_CLASSINFO(MIME, application/grapher:g1n:Graphable ASCII numeric data)Q_CLASSINFO(ToSuperClass, npgraphdemo)public:npgraphdemo(QWidget
13、*parent = 0);npgraphdemo();#endif / GRAPHFROM_H3.5 修改npgraphdemo.cpp在文件中增加QTNPFACTORY_BEGIN宏#include npgraphdemo.h#include imagedemo.hnpgraphdemo:npgraphdemo(QWidget *parent) : QWidget(parent)npgraphdemo:npgraphdemo()QTNPFACTORY_BEGIN(Qt-based Graph Plugin, A Qt-based NSAPI plug-in that graphs numeric data);QTNPCLASS(npgraphdemo)QTNPFACTORY_END()3.6 修改工程属性在“C/C+”下“预处理器”选项,增加”_X86_”,如下图编译即可3.7 注册和调用注册方法如下1、在命令行中输入regedit,打开注册表编辑2、在HKEYLOCALMAC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 隧道施工质量保障及安全防范措施
- 冬季施工保暖措施与实施
- 拓普康科维TKS-202全站仪现场操作流程
- 小学2025年春季学期突发事件应急计划
- 部编版语文三年级下册课堂管理策略
- 外科手术切口感染的原因分析及预防措施
- 建筑项目变更管理的有效控制措施
- 电工在城市基础设施中的工作职责
- 全国中小学生安全教育日教案
- 海底管道施工的安全保障措施
- 摄影师经纪人合作合同
- 手术室手卫生PDCA
- DB31∕T 1038-2017 生态公益林主要造林树种苗木质量分级
- JJF(陕) 053-2021 浮游菌采样器校准规范
- 【培训课件】跨境服务免税政策及管理解读
- 统编版语文四年级上册期末复习- 一字多义专项选择题(含答案)
- 高二 花城版 歌唱 第三单元第三节《润腔与韵味》课件
- 学校墙面彩绘施工合同
- 马克思主义基本原理概论复习资料
- 医院住院综合楼施工组织设计方案
- 计算机等级考试一级计算机基础及WPS Office应用试题与参考答案(2025年)
评论
0/150
提交评论