您的位置:首页 > 编程语言

如何通过编程打开一个网页

2014-01-29 10:57 357 查看
1.使用API:ShellExecute,可以打开一个网页,具体用法为:

   ShellExecute(NULL,"open","http://blog.csdn.net/smartfox80",NULL,NULL,SW_SHOWNORMAL);

   使用此API 有一个缺点,如果当前浏览器已经在运行,只会将当前浏览器的active Tab 页替换成我们要指定的网页。不会新打开一个网页。此API 针对所有浏览器有效。

   通过下面的做法,可以新打开一个网页,不会破坏原来的网页,(实际上是新打开一个IE进程,然后打开一个网页)。

   ShellExecute(NULL,"open","IEXPLORE","http://blog.csdn.net/smartfox80",NULL,SW_SHOWNORMAL);

   这种做法实际上是,每次执行上面的代码,新打开一个IE进程,然后打开一个指定的网页,另外,这样的做法,只对IE浏览器有效。

2.使用IWebBrowser2 接口(com接口),获取当前所有的URL列表,然后找到符合条件的url,然后重新定向到新的url,这样不会执行一次,就会打开一个新的窗口,主体代码如下:

#import   <mshtml.tlb>
#import   <shdocvw.dll>
void CTestAndCheckMFCDialogDlg::OnBnClickedButton4()
{
SHDocVw::IShellWindowsPtr   m_spSHWinds;
CoInitialize(NULL);
bool bFindHelpUrl =false;

if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows))   ==   S_OK)
{
IDispatchPtr   spDisp;
long   nCount   =   m_spSHWinds->GetCount();
for   (long   i   =   0;   i   <   nCount;   i++)
{
_variant_t   va(i,   VT_I4);
spDisp   =   m_spSHWinds->Item(va);
SHDocVw::IWebBrowser2Ptr   spBrowser(spDisp);
if(spBrowser !=  NULL)
{
IDispatchPtr   spDisp;
if(spBrowser->get_Document(&spDisp) ==S_OK && spDisp != 0)
{
MSHTML::IHTMLDocument2Ptr   spHtmlDocument(spDisp);
MSHTML::IHTMLElementPtr   spHtmlElement;
if(spHtmlDocument == NULL)
continue;

spHtmlDocument->get_body(&spHtmlElement);
if(spHtmlDocument==NULL)
continue;

_bstr_t   str;
str = spBrowser->GetLocationURL();//URL of IE   window();
//AfxMessageBox(str);

_bstr_t aa("http://blog.csdn.net/smartfox80");//替换后的URL
char *pTemp = str;
char *pFind = strstr(pTemp,"xxxxx");
if(pFind != NULL)
{
bFindHelpUrl =true;
spBrowser->Navigate(aa);
}
break;
} //end of if
}
}

}
if( !bFindHelpUrl )
ShellExecute(NULL,"open","IEXPLORE","http://blog.csdn.net/smartfox80",NULL,SW_SHOWNORMAL);

CoUninitialize();
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IE编程 打开网页
相关文章推荐