ActiveX.pro

#-------------------------------------------------
#
# Project created by QtCreator 2018-01-19T09:37:39
#
#-------------------------------------------------
# Qt shared
QT_CI_JENKINS_HOME=$$(JENKINS_HOME)
!isEmpty(QT_CI_JENKINS_HOME) {
message("Qt CI environment detected, suppressing example registration")
CONFIG += qaxserver_no_postlink
} TEMPLATE = app
TARGET = ActiveX
CONFIG += warn_off
QT += core widgets axserver
SOURCES += \
main.cpp \
activex.cpp \ HEADERS += \
activex.h FORMS += \
activex.ui RC_FILE = ActiveX.rc
DEF_FILE = ActiveX.def

activex.h

#ifndef ACTIVEX_H
#define ACTIVEX_H #include <QWidget>
#include <QtCore>
#include <ActiveQt> //# 设置内存执行编码 UTF-8
#ifdef Q_OS_WIN
#pragma execution_character_set("UTF-8")
#endif // ObjectSafety
//# 控件安全标记类
#include <QAxAggregated>
#include <objsafe.h>
#include <QUuid>
class ObjectSafety : public QAxAggregated, public IObjectSafety
{
public:
ObjectSafety(){
}
QAXAGG_IUNKNOWN;
long queryInterface(const QUuid &iid, void **iface)
{
*iface = NULL;
if (iid == IID_IObjectSafety)
{
*iface = (IObjectSafety*)this;
}
else
{
return E_NOINTERFACE;
}
AddRef();
return S_OK;
}
HRESULT WINAPI GetInterfaceSafetyOptions(REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
{
*pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACESAFE_FOR_UNTRUSTED_CALLER;
*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACESAFE_FOR_UNTRUSTED_CALLER;
return S_OK;
}
HRESULT WINAPI SetInterfaceSafetyOptions(REFIID riid, DWORD pdwSupportedOptions, DWORD pdwEnabledOptions)
{
return S_OK;
}
};
//End ObjectSafety namespace Ui {
class ActiveX;
} class ActiveX : public QWidget,public QAxBindable
{
Q_OBJECT
Q_CLASSINFO("ClassID", "{DF16845C-92CD-4AAB-A982-EB9840E74669}")
Q_CLASSINFO("InterfaceID", "{616F620B-91C5-4410-A74E-6B81C76FFFE0}")
Q_CLASSINFO("EventsID", "{E1816BBA-BF5D-4A31-9855-D6BA432055FF}")
public:
explicit ActiveX(QWidget *parent = 0);
~ActiveX();
public Q_SLOTS:
QString Version();
private:
Ui::ActiveX *ui;
QAxAggregated* createAggregate()
{
return new ObjectSafety;
}
}; #endif // ACTIVEX_H

activex.cpp

#include "activex.h"
#include "ui_activex.h" ActiveX::ActiveX(QWidget *parent) :
QWidget(parent),
ui(new Ui::ActiveX)
{
ui->setupUi(this);
} ActiveX::~ActiveX()
{
delete ui;
} QString ActiveX::Version()
{
return QString("ActiveX 1.0.0");
}

main.cpp

#include "activex.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication app(argc, argv);
if (!QAxFactory::isServer()) {
ActiveX w;
w.show();
return app.exec();
}
return app.exec();
} //! [1]
QAXFACTORY_BEGIN("{EC08F8FC-2754-47AB-8EFE-56A54057F34E}", /* type library ID */ "{A095BA0C-224F-4933-A458-2DD7F6B85D8F}") /* application ID */
QAXCLASS(ActiveX)
QAXFACTORY_END()
//! [1]

ActiveX.def

EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
DumpIDL PRIVATE

`index.html'

<html lang="en">
<head>
<meta name="GENERATOR" content="Microsoft Visual Studio">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ActiveXCameraGui</title>
</head>
<body>
<object id="ActiveQtServer" style="width:256px;height:256px;" classid="CLSID:DF16845C-92CD-4AAB-A982-EB9840E74669">
<param name="Version" value="BTC">
</object>
<button onclick="alert(ActiveQtServer.Version())">Version</button> <script>
window.onload = function () {
//var ret = ActiveQtServer.Version;
//alert(ret);//打印 初始化版本信息
//alert("Hello World!");//打印 Hello World!
};
</script>
</body>
</html>

最新文章

  1. C#TreeView控件遍历文件夹下所有子文件夹以及文件
  2. 6.3Sum &amp;&amp; 4Sum [ &amp;&amp; K sum ] &amp;&amp; 3Sum Closest
  3. H3C ipsec ike 协商配置
  4. 微信支付v3发布到iis时的证书问题(转)
  5. Android推送方案分析(MQTT/XMPP/GCM)
  6. CE_现金银行总行分行设定详解(案例)
  7. java web servlet
  8. wampsever在win10中安装扩展掉坑
  9. delphi 常用属性+方法+事件+代码+函数
  10. LIMS系统供应商一览表
  11. FileUpload 改变控件显示的文字
  12. 第一章:eclipse 中修改字体大小和编码格式
  13. QTCreator 更改代码高亮主题为 VS+VA助手 风格
  14. 转载:C#特性-表达式树
  15. mysql的存储过程,函数,事件,权限,触发器,事务,锁,视图,导入导出
  16. Python之递归函数
  17. 关于H5的Canvas
  18. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存
  19. DP的学习
  20. 腾讯云短信服务使用记录与.NET Core C#代码分享

热门文章

  1. 解决 PHPExcel 长数字串显示为科学计数[转]
  2. CentOS7.x机器安装Azure CLI2.0
  3. [Git] git log命令
  4. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(2)-查询实现
  5. linkin大话面向对象--java关键字
  6. Java并发系列[2]----AbstractQueuedSynchronizer源码分析之独占模式
  7. 【转】判断点在多边形内(matlab)
  8. SQL FOR XML PATH 和 Stuff 用法
  9. ASP.NET没有魔法——ASP.NET MVC 模型验证
  10. tensorflow Image 解码函数