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

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();   
}


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值