现在的位置: 首页 > 综合 > 正文

vc++获取当前使用IE的URL路径与页面的源代码

2013年09月19日 ⁄ 综合 ⁄ 共 1705字 ⁄ 字号 评论关闭

vc++获取当前使用IE的URL路径与页面的源代码

这是关于获取当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.sse6.cn 转载请注明。

抱歉!评论已关闭.