如何通过编程打开一个网页
2014-01-29 10:57
423 查看
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,这样不会执行一次,就会打开一个新的窗口,主体代码如下:
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(); }
相关文章推荐
- Android 编程日记 如何通过包名打开一个应用程序
- Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值
- Python 网络爬虫 005 (编程) 如何编写一个可以 下载(或叫:爬取)一个网页 的网络爬虫
- 如何查看一个网页打开速度
- 如何为workflow单据类型定义一个form属性,在notify中通过这个属性打开表单
- Flex中如何通过给openItems属性设置一个XMLList或Array对象来打开Tree的一个节点的例子
- 如何为workflow单据类型定义一个form属性,在notify中通过这个属性打开表单
- android中如何实现按一个按钮打开一个网页
- [置顶] 【实战】如何通过html+css+mysql+php来快速的制作动态网页(以制作一个博客网站为列)
- 用DS播放一个视频时,如何通过编程知道GRAPH加载的FILTER的组件所在的路径??
- 如何通过命令行或者使用代码打开一个apk文件
- Flex中如何给一个按钮添加链接,点击链接打开一个网页呢?
- QT 通过一个http链接 打开一个浏览器和对应的网页
- 如何通过命令行或者使用代码打开一个apk文件
- Android中通过浏览器打开一个网页
- android通过快捷方式打开一个网页
- Python 网络爬虫 004 (编程) 如何编写一个网络爬虫,来下载(或叫:爬取)一个站点里的所有网页
- Flex中如何给一个按钮添加链接,点击链接打开一个网页呢?
- ios 编程日记 2:如何在terminal下打开一个工程