本文转载自我2004年在csdn发布的博客
问
张硕,你好,
我目前对IE
编程感兴趣,在网上看到了你的文章,觉得很不错。
我用了很长时间的MyIE
(现在叫Maxthon
),它里面有一个功能不错,就是按住Ctrl
键然后拖动一个图片,就可以把这个图片保存到一个默认的目录下(在设置中设)。我刚开始以为它只是把图片再下载一次,但是我拔网线后再Ctrl
+拖鼠标,还是能够保存图片。
我打算自己写一写,但是IOleCommandTarget::Exec()
和IWebBrowser2::ExecWB()
都会弹出另存为对话框。
请问你,有什么高招能够直接把图片从Cache
中拷出来吗?
非常感谢!
2004-11-05
答
在WinInet
库中Microsoft
提供了一系列的API
函数来操作Internet Cache
,所以你的要求很容易满足。下面的例子给出了根据url
取得其在Internet
临时目录中文件名的方法。得到鼠标拖动的图片的url
比较简单,此处不再赘述。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)new char[dwEntrySize];
}
if (!GetUrlCacheEntryInfo(lpszUrl, lpCacheEntry, &dwEntrySize))
{
return FALSE;
}
//lpCacheEntry->lpszLocalFileName即是lpszUrl在缓存中的文件名
return TRUE;