2014-01-10 2 views
3

Мне нужно сохранить определенное изображение в Twebbrowser, но БЕЗ его перезагрузки; изображение уже загружено. Я знаю, как получить исходный URL-адрес изображения и загрузить его, но мне действительно нужно сохранить изображение, которое оно уже загружено в браузере. Есть ли способ?Сохранить конкретное изображение в TWebbrowser Delphi?

Спасибо!

+2

я думаю, что если будет доказано, - то это уже в вашем приложении раздел кэша MSIE, так что если вы откроете он напрямую, он будет извлечен из кеша, а не с сервера –

+0

Да, это то, что я хочу, сохранить из кеша IE; Я не знаю, как это сделать. – delphirules

+0

Я только что нашел вопрос с решением :) http://stackoverflow.com/questions/13444041/image-from-twebbrowser-to-tpicture – delphirules

ответ

4

Кажется, нет прямого способа сохранить элемент изображения в файл, поэтому я бы получил его из кеша. Чтобы скопировать файл из кеша IE с заданным URL ресурса, вы можете использовать функцию, как показано ниже. Параметр URL это значение src атрибут HTML тега и FileName это имя целевого файла:

uses 
    WinInet; 

procedure SaveInetResourceToFile(const URL, FileName: string); 
var 
    BufferSize: DWORD; 
    CacheEntry: PInternetCacheEntryInfo; 
begin 
    if not RetrieveUrlCacheEntryFile(PChar(URL), TInternetCacheEntryInfo(nil^), 
    BufferSize, 0) then 
    begin 
    if GetLastError = ERROR_INSUFFICIENT_BUFFER then 
    begin 
     GetMem(CacheEntry, BufferSize); 
     try 
     if RetrieveUrlCacheEntryFile(PChar(URL), CacheEntry^, BufferSize, 0) then 
     try 
      Win32Check(CopyFile(CacheEntry.lpszLocalFileName, PChar(FileName), 
      False)); 
     finally 
      Win32Check(UnlockUrlCacheEntryFile(PChar(URL), 0)); 
     end 
     else 
      RaiseLastOSError; 
     finally 
     FreeMem(CacheEntry); 
     end; 
    end 
    else 
     RaiseLastOSError; 
    end; 
end; 
Смежные вопросы