【发布时间】:2013-12-31 16:53:20
【问题描述】:
我正在尝试在 C++ 中测试有关 WMI 通知的 msdn 示例,该示例位于此处:Qt5.2 项目中的Example: Receiving Event Notifications Through WMI。一切都编译得很好并且运行良好,但是当我尝试运行示例代码时,我一开始就卡住了!
我得到了错误:
无法初始化 Com 库
我在某处读到Qt 本身似乎初始化了 com 对象,因此无需重新初始化它。
在这种情况下,如果我评论初始化部分,我会收到 CoInitializeSecurity 失败错误。!
我在这里想念什么?
【问题讨论】:
-
如果 Qt 为您初始化 COM,这是 Qt 中的一个缺陷。 Qt 不可能知道如何为您初始化 COM,因为它不知道您的线程应该在哪个 Appartment 中。示例代码尝试将线程初始化为在多线程 Appartment 中。如果失败,显然 Qt 为单线程公寓初始化了线程。 编辑:请同时提供错误代码。
-
谢谢,这是我得到的错误代码:无法初始化 COM 库。错误代码 = 0xffffffff80010106 这是我记录错误而不是 cout 的代码! ui->txtLog->setText("初始化COM库失败。错误码=0x" + QString::number(hrs,16));
-
错误代码 0x80010106 转换为:“设置后无法更改线程模式。” 要运行示例代码,您必须创建一个新线程并祈祷 Qt 停止作为一个 PITA。
-
尝试使用这个:std::thread t(&frmProcess::WMIMethod2,this); t.join();而不是简单地调用 WMIMethod2,结果是这样的:i43.tinypic.com/289dlrr.jpg
-
我想这是我上面暗示的Qt不再是PITA的祈祷部分。
标签: c++ events notifications wmi qt5