手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

FAQ:如何从URL取得其在Internet Cache中的文件名

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

问========================================

张硕,你好,
我目前对IE编程感兴趣,在网上看到了你的文章,觉得很不错。
我用了很长时间的MyIE(现在叫Maxthon),它里面有一个功能不错,就是按住
Ctrl键然后拖动一个图片,就可以把这个图片保存到一个默认的目录下(在设置中
设)。我刚开始以为它只是把图片再下载一次,但是我拔网线后再Ctrl 拖鼠标,还是
能够保存图片。
我打算自己写一写,但是IOleCommandTarget::Exec()和IWebBrowser2::ExecWB()
都会弹出另存为对话框。
请问你,有什么高招能够直接把图片从Cache中拷出来吗?
非常感谢!

2004-11-05


答========================================

在WinInet库中Microsoft提供了一系列的API函数来操作Internet Cache,所以你的要求很容易满足。下面的例子给出了根据url取得其在Internet临时目录中文件名的方法。得到鼠标拖动的图片的url比较简单,此处不再赘述。

DWORD dwEntrySize=0;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry;

char strTemp[80];
DWORD dwTemp;

//假设lpszUrl是图片的url
if (!GetUrlCacheEntryInfo(lpszUrl,NULL,&dwEntrySize))
{
if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
{
return FALSE;
}
else
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)new char[dwEntrySize];
}
else
return FALSE;

if (!GetUrlCacheEntryInfo(lpszUrl,lpCacheEntry,&dwEntrySize))
{
return FALSE;
}
else
{
//lpCacheEntry->lpszLocalFileName即是lpszUrl在缓存中的文件名
return TRUE;
}


引用地址:FAQ:如何从URL取得其在Internet Cache中的文件名

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!