【发布时间】:2019-04-17 17:19:59
【问题描述】:
我有一个运行 chromium 客户端浏览器的应用程序,有时我需要执行 WMI 代码来访问一些设备信息,但每次都失败。它仅在应用程序不使用 TChromium 对象时工作。可能的 TChromium(CEF3) 初始化 COM 库,当前线程上只允许一个实例。我读到应用程序应该使用 CoInitializeEx 和 COINIT_APARTMENTTHREADED 而不是 CoInitialize。
在一个应用程序中使用 TChromium (CEF3) 时是否可以访问 COM 库和 CoInitializeSecurity?如果是,怎么做?
以下是我想要达到的目标:
CoUninitialize();
CoInitialize(NULL);
if(CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0) == S_OK)
{
// cannot get here, CoInitializeSecurity fails
... need to execute WMI code using IWbemLocator, IWbemServices ...
}
【问题讨论】:
-
非常值得检查 Chromium 库是否初始化了 COM。如果是这样,那就是一个错误,应该报告。
标签: c++ delphi c++builder