在线程里通过IWebBrowser2 打开新的连接
在线程里通过IWebBrowser2 打开新的连接求助
我想在线程里通过IWebBrowser2 打开新的连接。但上面无法正常打开网页,请问怎么解决!
------解决方案--------------------
线程里发送消息PostMessage给主线程,让主线程调用Webbrowser来Navigate新的页面
void CxpDlg::OnBnClickedButton1()
{
CComPtr<IUnknown> spUnk;
spUnk.Attach(m_Web.GetControlUnknown());
CComQIPtr<IWebBrowser2> spBrowser = spUnk;
IStream *pStream = NULL;
HRESULT hr = ::CoMarshalInterThreadInterfaceInStream(IID_IWebBrowser2,spBrowser,&pStream);
if ( FAILED(hr) )
{
return;
}
if (hMainThread == NULL)
{
DWORD dwThreadID;
hMainThread = CreateThread(NULL,NULL,MainThread, (LPVOID)pStream ,NULL,&dwThreadID);
}
}
DWORD WINAPI MainThread(LPVOID lpParameter)
{
::CoInitializeEx(0,COINIT_MULTITHREADED ); //初始化(必需)
HRESULT hr;
USES_CONVERSION;
IStream *pStream = (IStream*)lpParameter;
IWebBrowser2 *pBrowser = NULL;
hr = ::CoGetInterfaceAndReleaseStream(pStream,IID_IWebBrowser2,(void**)&pBrowser); //在这里获得接口指针
hr = pBrowser->Navigate(L"http://www.baidu.com",NULL,NULL,NULL,NULL);
if (FAILED(hr))
{
MessageBox(NULL,"打开网页失败","",0);
::CoUninitialize();
return S_OK;
}
return;
}
我想在线程里通过IWebBrowser2 打开新的连接。但上面无法正常打开网页,请问怎么解决!
------解决方案--------------------
线程里发送消息PostMessage给主线程,让主线程调用Webbrowser来Navigate新的页面