根据Internet Explorer_Server窗口得到IWebBrowser2,调用Navigate2失败解决办法
根据Internet Explorer_Server窗口得到IWebBrowser2,调用Navigate2失败
函数代码如下,传入的参数hWnd为Internet Explorer_Server窗口句柄
函数调用执行的结果总是FAIL,哪位达人指出其中的错误?谢谢了
void MyNavigate2(HWND hWnd,char *url)
{
CoInitialize( NULL );
HINSTANCE hInst = LoadLibrary(_T( "OLEACC.DLL "));
IWebBrowser2* pWebBrowser2=NULL;
if(hInst!=NULL)
{
if(hWnd!=NULL)
{
LRESULT lRes;
UINT nMsg = ::RegisterWindowMessage(_T( "WM_HTML_GETOBJECT "));
::SendMessageTimeout(hWnd,nMsg,0L,0L,SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, _T( "ObjectFromLresult ") );
if(pfObjectFromLresult!=NULL)
{
HRESULT hr;
CComPtr <IHTMLDocument2> spDoc;
hr=pfObjectFromLresult(lRes,IID_IHTMLDocument2,0,(void**)&spDoc);
if(SUCCEEDED(hr))
{
CComPtr <IHTMLWindow2> spWnd2;
CComPtr <IServiceProvider> spServiceProv;
hr=spDoc-> get_parentWindow ((IHTMLWindow2**)&spWnd2);
if(SUCCEEDED(hr))
{
hr=spWnd2-> QueryInterface (IID_IServiceProvider,(void**)&spServiceProv);
if(SUCCEEDED(hr))
{
hr = spServiceProv-> QueryService(SID_SWebBrowserApp,IID_IWebBrowser2,(void**)&pWebBrowser2);
CComVariant d= "http://www.google.com ";
hr=pWebBrowser2-> Navigate2(&d,NULL,NULL,NULL,NULL);
Sleep(10000);
if(SUCCEEDED(hr))
{
MessageBox(NULL, "SUCCEEDED ", "Navigate2 ",MB_ICONSTOP);
}
else
MessageBox(NULL, "fail ", "Navigate2 ",MB_ICONSTOP);
//pWebBrowser2-> Navigate2((VARIANT *)url,&t,&v,&p,&h);
}
}
}
}
}
::FreeLibrary(hInst);
}
CoUninitialize();
}
------解决方案--------------------
错误代码呢?
------解决方案--------------------
我也和你遇到了一样的问题,我SNIFF了数据,发现改了HEADER后的数据是正常发送出去了,但我在网页上用document.referrer里取不到referrer的值。真郁闷!!!
函数代码如下,传入的参数hWnd为Internet Explorer_Server窗口句柄
函数调用执行的结果总是FAIL,哪位达人指出其中的错误?谢谢了
void MyNavigate2(HWND hWnd,char *url)
{
CoInitialize( NULL );
HINSTANCE hInst = LoadLibrary(_T( "OLEACC.DLL "));
IWebBrowser2* pWebBrowser2=NULL;
if(hInst!=NULL)
{
if(hWnd!=NULL)
{
LRESULT lRes;
UINT nMsg = ::RegisterWindowMessage(_T( "WM_HTML_GETOBJECT "));
::SendMessageTimeout(hWnd,nMsg,0L,0L,SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, _T( "ObjectFromLresult ") );
if(pfObjectFromLresult!=NULL)
{
HRESULT hr;
CComPtr <IHTMLDocument2> spDoc;
hr=pfObjectFromLresult(lRes,IID_IHTMLDocument2,0,(void**)&spDoc);
if(SUCCEEDED(hr))
{
CComPtr <IHTMLWindow2> spWnd2;
CComPtr <IServiceProvider> spServiceProv;
hr=spDoc-> get_parentWindow ((IHTMLWindow2**)&spWnd2);
if(SUCCEEDED(hr))
{
hr=spWnd2-> QueryInterface (IID_IServiceProvider,(void**)&spServiceProv);
if(SUCCEEDED(hr))
{
hr = spServiceProv-> QueryService(SID_SWebBrowserApp,IID_IWebBrowser2,(void**)&pWebBrowser2);
CComVariant d= "http://www.google.com ";
hr=pWebBrowser2-> Navigate2(&d,NULL,NULL,NULL,NULL);
Sleep(10000);
if(SUCCEEDED(hr))
{
MessageBox(NULL, "SUCCEEDED ", "Navigate2 ",MB_ICONSTOP);
}
else
MessageBox(NULL, "fail ", "Navigate2 ",MB_ICONSTOP);
//pWebBrowser2-> Navigate2((VARIANT *)url,&t,&v,&p,&h);
}
}
}
}
}
::FreeLibrary(hInst);
}
CoUninitialize();
}
------解决方案--------------------
错误代码呢?
------解决方案--------------------
我也和你遇到了一样的问题,我SNIFF了数据,发现改了HEADER后的数据是正常发送出去了,但我在网页上用document.referrer里取不到referrer的值。真郁闷!!!