描述:
我用ShellWindows获得了已经打开的IE的IWebBrowser2接口,调用IWebBrowser2->GoHome是有用的,但是调用IWebBrowser2->navigate2没反应。刚刚开始学习COM,请高手帮我看看吧,下面是代码:
#include "stdafx.h"
#include "afxdisp.h"
#include "mshtml.h"
int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
IShellWindows* m_spSHWinds;
::CoCreateInstance( CLSID_ShellWindows,NULL,CLSCTX_INPROC_SERVER,IID_IShellWindows,(LPVOID*)&m_spSHWinds);
long nCount;
m_spSHWinds->get_Count(&nCount);
for (long i = 0; i < nCount; i++)
{
VARIANT va;
va.vt = VT_I4;
va.lVal = i;
IDispatch* spDisp;
m_spSHWinds->Item(va,&spDisp);
IWebBrowser2* spBrowser;
spDisp->QueryInterface(IID_IWebBrowser2,(void**)&spBrowser);
if (spBrowser != NULL)
{
IHTMLDocument2* spDoc;
IDispatch* IDispDoc;
spBrowser->get_Document(&IDispDoc);
IDispDoc->QueryInterface(IID_IHTMLDocument2,(void**)&spDoc);
if (spDoc != NULL)
{
VARIANT VaUrl;
VaUrl.vt = VT_BSTR;
VaUrl.bstrVal = ::SysAllocString(_T("http://www.csdn.net/"));
VARIANT VaFlags;
VaFlags.vt = VT_I4;
VaFlags.intVal = navOpenInNewWindow;
VARIANT VaTargetFrameName;
VaTargetFrameName.vt = VT_BSTR;
VaTargetFrameName.bstrVal = ::SysAllocString(_T("_BLANK"));
spBrowser->Navigate2( &VaUrl, &VaFlags, &VaTargetFrameName, NULL, NULL);
puts("#");
::SysFreeString(VaUrl.bstrVal);
::SysFreeString(VaTargetFrameName.bstrVal);
}
}
}
::CoUninitialize();
return 0;
}
您可能想查找下面的文章:
- IWebBrowser2::Navigate的问题
- IWebBrowser2::Navigate的问题
- 请教IWebBrowser2问题~~~~~~~~~在线等
- 如何用IWebBrowser2判断当前窗口是否处于激活状态?
- ATL下有没有包装过的(基础是IWebBrowser2)的浏览器控件可用?或者哪里有源代码可以下载?
- 通过IWebBrowser2能获得IE中已经载入的其他插件的接口么?
- 给定一个url,如何用IWebBrowser2接口获得该url的源码?
- 如何在activex中得到IWebBrowser2指针???
- 提问一个IWebBrowser2如何自动保存当前的文件啊,如果用EXECWB会弹出SAVE窗口,我想不让他弹出,比如自动保存到C:下,请问这个怎么搞啊,有点
- 关于IWebBrowser2的get_Width,get_Height问题(解决后将加到200分,不够再加,多谢!)