IOleWindow::GetWindow 0x8001010D: 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫。
使用WebBrowser控件。
多线程环境。
主线程使用CoInitializeEx(NULL, COINIT_MULTITHREADED)初始化COM,之后创建Windows消息队列。然后创建一个子线程,同样用CoInitializeEx(NULL, COINIT_MULTITHREADED)初始化,然后在子线程内创建WebBroswer控件:
hr = CoCreateInstance(CLSID_WebBrowser, NULL,
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
IID_IUnknown, (LPVOID *)(&pUnk));
在该子线程函数内,由创建的WebBroswer对象QueryInterface到IOleWindow接口,调用WebBroswer对象的IOleWindow::GetWindow方法出错:0x8001010D: 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫。
想来想去想不通,在同一个线程内创建的对象,怎么不能同步操作呢?怎么解决问题?