相当于Qt/C++中的WithEvents VBA
Equivalent of WithEvents VBA in Qt/C++
我正在将Excel宏移植到Qt/C++。
此宏使用 ActiveX 和 COM 与另一个应用程序(Brüel & Kjaer 的 Pulse Labshop)进行通信。
Excel 宏通过 WithEvents
变量截获 Labshop 通知。
如何在C++中实现相同的行为?Qt信号/插槽机制在这里似乎是不可能的......
WithEvents
是 VB 和 VBA 中用于调用 VB 运行时中的代码的关键字,该运行时执行使用 COM 可连接对象体系结构设置回调机制所需的一切。
您需要阅读此体系结构及其相关接口IConnectionPoint
等;在C++代码中实现事件接收器接口;然后添加代码以向 Pulse Labshop 的事件源注册接收器。
所有这些工作都是用一个"魔术"关键词完成的,这是VB在当时如此受欢迎的一个很好的理由。
实际上Qt可以从dll和tlb生成特定的QAxObject。
对于这个项目,供应商给了我一个tlb文件。
在专业文件中:
TYPELIBS = lib/Pulse.tlb
TYPELIBS = $$system( dumpcpp lib/Pulse.tlb -nometaobject -o src/controller/Pulse )
然后生成一个 Pulse.h 文件。这些类有插槽和信号。因此,拦截事件很容易。
它不起作用的原因是Pulse Labshop许可证已过期。
相关文章:
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- 从Excel VBA调用C++DLL只能从Visual Studio中的调试实例工作
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 是否可以将 VBA 编程环境添加到我的C++应用程序?
- 如何在 VBA/Excel 中创建字符串数组并将其发送到C++ DLL,以便可以在 DLL 中循环访问它
- DLL函数在VBA环境中不起作用,但在Excel VBA中工作
- 从 VBA 中的 (c++ BSTR) 字符串中删除 chr(0)
- 将动态分配的数组从C DLL返回到VBA
- 将SafeArray变体从C DLL传递到VBA
- 如何从C DLL返回的指针中获得VBA中的整个矩阵
- 当通过访问中的VBA远程启动时,请写信给我的文档
- VBA 中的多个 DLL 调用
- (Mac)将字符串从VBA传递到Dylib-在C 函数中接收到的空字符串
- Calling an xll UDF from VBA
- 具有C DLL的Excel-VBA有时会崩溃
- 将字符串数组从C DLL返回到VBA(Excel)
- 传递从VBA到C++的范围
- 当我将字符串数组从 VBA 传递到 c++ 并将它们用作映射中的键时,为什么我无法从映射中检索数据(使用键)
- VBA 中的 Qt5 Dll,错误运行时错误 453
- 相当于Qt/C++中的WithEvents VBA