高手们进来看看吧,我是不会了——关于调用IE的API。

ybudi 2002-05-04 02:07:25
在IE中有一个功能,查看源文件,这个大家都知道,我现在想用程序来实现他,就是在我看到这个网页的之后,运行程序,生成该网页的html源文件,这里需要说明的是,在程序中不建立网络的连接,网络的连接,与数据的读取是通过IE来完成的,就是说,这个html文件不是从服务器上读进来的,而是从本地读进来的。不知道这样说的明不明白。
我想IE应该有实现这个功能的API,可是我没有这方面的文档和例程,希望大家能帮忙,提些建议也有分拿。分我只能给这么多了(csdn限制),但是问题解决后,我会再开几个贴子,给大家散分。
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
papaya_stone 2002-05-05
  • 打赏
  • 举报
回复
学习!
masterz 2002-05-05
  • 打赏
  • 举报
回复
if you only need the html source, you can refer to the following code snippet.
///////////////////////////////////////////////////////////////////////////////////////
//GetRunningIESrc
///////////////////////////////////////////////////////////////////////////////////////
void CGetIESrcDlg::GetRunningIESrc()
{
// Import the following files in your stdafx.h
// #import <mshtml.tlb> // Internet Explorer 5
// #import <shdocvw.dll>
// Refer to "Connect to Internet Explorer Instances, From your own Process. " in www.codeguru.com
// enumeration all shell windows, only URL and source code of the first IE window is shown, you have to
//modify according your own need.
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();
}
masterz 2002-05-05
  • 打赏
  • 举报
回复
look at INTERNET_CACHE_ENTRY_INFO Structure,pay attention to the following two members,
LPTSTR lpszSourceUrlName;
LPTSTR lpszLocalFileName;
you can use FindNextUrlCacheEntry etc API to get what you want.
xIzam 2002-05-05
  • 打赏
  • 举报
回复
网页传送完后文件不是放在windows下面那个很长的目录内,叫做什么
Intenet Temp...什么的吗?你把那个文件直接从Intenet Temp..什么的目录内读出来不就行了吗?
xingkong 2002-05-05
  • 打赏
  • 举报
回复
#include <mshtmhst.h>
#include <mshtmcid.h>
#import <mshtml.tlb>
MSHTML::IHTMLDocument2Ptr pdoc;
_variant_t varinput,varoutput;
IOleCommandTarget *pCmd;
HRESULT hr;
pdoc=GetHtmlDocument();
hr=pdoc.QueryInterface(IID_IOleCommandTarget,&pCmd);
if(SUCCEEDED(hr))
{
varinput=_T("");
hr=pCmd->Exec(&CGID_MSHTML,IDM_VIEWSOURCE,OLECMDEXECOPT_DODEFAULT,&varinput,&varoutput);
}
geeksky 2002-05-05
  • 打赏
  • 举报
回复
想给你的人家都有了,算了
ybudi 2002-05-05
  • 打赏
  • 举报
回复
可是,我不想建立网络连接,因为当你看到这个网页的时候,数据已经传输完成了,我想应该是调用IE的API可以实现。
Lesily 2002-05-04
  • 打赏
  • 举报
回复
study
kingzai 2002-05-04
  • 打赏
  • 举报
回复
用wininet写一个函数不就得了
int main(int argc, char* argv[])

{
LPCSTR url="https://www.yahoo.com";
HINTERNET hInet=InternetOpen("",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);
assert(hInet);

HINTERNET hHttps=InternetOpenUrl(hInet,url,NULL,NULL,NULL,NULL);
assert(hHttps);
ULONG nRead=0;
do{
char Buffer[1024];
Buffer[1000]=0;
InternetReadFile(hHttps,Buffer,1000,&nRead);
puts(Buffer);
}while(nRead>0);
InternetCloseHandle(hHttps);
InternetCloseHandle(hInet);

}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧