描述:
下面一段代码是从蒋晟老大的http://blog.joycode.com/jiangsheng/archive/2004/02/27/14110.aspx
找来的,不能navigate(请看代码,返回E_FAIL),这是怎么回事呢?还有个问题,怎样把处理代码和OnDocumentComplete事件联系起来呢?(msdn上还说如果webbrowser不可视,就不触发OnDocumentComplete事件,那怎么知道navigate成功了?)
void CVc_rhDlg::OnOK()
{
CoInitialize(NULL);
CComPtr<IOleObject> m_spOleObjectPreloadBrowser;
HRESULT hr = CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC,
IID_IOleObject, (void**)&m_spOleObjectPreloadBrowser);
if (FAILED(hr)){
AfxMessageBox(_T("Can not create WebBrowser."));
return;
}
CComQIPtr<IWebBrowser2> pWebBrowser(m_spOleObjectPreloadBrowser);
if(pWebBrowser){
CComBSTR bstrURL = _T("about:blank");
COleSafeArray vPostData;
hr = pWebBrowser->Navigate(bstrURL,
COleVariant((long) 0, VT_I4),
COleVariant(_T(""), VT_BSTR),
vPostData,
COleVariant(_T(""), VT_BSTR));
if (FAILED(hr)){
char c[20];
AfxMessageBox(ltoa(hr,c,16)); //!!这里显示0x80004005 (即E_FAIL)!!
return;
}
pWebBrowser->put_Visible(1);
IHTMLDocument2 *iHD;
IDispatch * iD;
hr = pWebBrowser->get_Document(&iD);
if (FAILED(hr)){
AfxMessageBox(_T("Can not get iDispatch document."));
return;
}
iD->QueryInterface(IID_IHTMLDocument2,(void**)&iHD);
if (FAILED(hr)){
AfxMessageBox(_T("Can not query ihtmlDoc2."));
return;
}
BSTR bs;
iHD->get_title(&bs);
_bstr_t bst(bs,0);
AfxMessageBox((char *)bst);
}
// CDialog::OnOK();
}
解决方案1:
it is designed to accelerate the creations of WebBrowser controls, not for Navigate web pages. For a navigatable internet explorer example, see
http://www.codeproject.com/shell/AutomateShellWindow.asp
您可能想查找下面的文章:
- VC中关于MSOutlook的编程欢迎蒋晟赐教
- +++++++++++jiangsheng蒋晟Net[MVP]xiaosan等老大请进
- 高手指点向jiangsheng(蒋晟),请教关于OFFICEAUTOMATION的问题。
- 关于Hook到Word函数的问题有点难度,请救急,PM在催了!!!请蒋晟不吝赐教!!
- dsoframer控件,如何触发事件。请蒋晟大哥帮帮忙!
- ActiveX多线程的问题,看了蒋晟老大的文章还是没明白,请各位高手指点,分数不够另开一贴再散!!!!!!!!!!!!!
- jiangsheng蒋晟大哥请进!!
- 蒋晟请回帖,如何截获outlook中回复和全部回复事件
- [jiangsheng(蒋晟Net[MVP])]请进,帮忙,多谢
- ATLBHO如何获得浏览器窗口移动的event望蒋晟老师指点