问========================================
张硕,你好, 我目前对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中的文件名
|