这是关于获取当IE所打开的URL地址(VC++),并且自动打印出相应的网址源代码内容:
//将这个放入你的头文件stdafx.h中 #import <mshtml.tlb> #import <shdocvw.dll> void CGetIESrcDlg::GetRunningIESrc() { SHDocVw::IShellWindowsPtr m_spSHWinds; CoInitialize(NULL); 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); MSHTML::IHTMLDocument3* pHTMLDoc3; HRESULT hr = spHtmlDocument->QueryInterface(__uuidof(MSHTML::IHTMLDocument3),(LPVOID*)&pHTMLDoc3); ASSERT(SUCCEEDED(hr)); MSHTML::IHTMLElement* pDocElem; hr = pHTMLDoc3->get_documentElement(&pDocElem); pHTMLDoc3->Release(); ASSERT(SUCCEEDED(hr)); BSTR bstrHTML; pDocElem->get_outerHTML(&bstrHTML); pDocElem->Release(); AfxMessageBox(CString(bstrHTML)); SysFreeString(bstrHTML); } break; } } } else { AfxMessageBox("Shell Windows interface is not avilable"); } CoUninitialize(); }
说明:简单遍历了整个网页的所有节点,找出容器当中的第一个页面(多个IE页面的第一页),然后进行遍历取出所有子节点并打印。大家可以测试一下,因为有时候网页过大会出现假死现象,这段代码本工作室测试的时候,可以使用,但用到IE7,IE8这样多标签页的浏览器里要查到每一标签页的内容可能还需要改动一下,有兴趣的朋友自己试试吧!
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/vc/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索afxmessagebox
mshtml
,以便于您获取更多的相关知识。
时间: 2024-04-20 20:20:27