![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Вот такая ошибка при попытки сохранения капчи с м.вк в браузере
http://i44.fastpic.ru/big/2012/1018/...aa15663b21.png вот код: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw,urlmon,mshtml,wininet; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private type IHTMLElementRender = interface(IUnknown) ['{3050F669-98B5-11CF-BB82-00AA00BDCE0B}'] function DrawToDC ( _hDC: HDC ): HResult; stdcall; end; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function GetCacheFileName(const Url: string; var FileName: string): Boolean; var Info: PInternetCacheEntryInfo; InfoBufSize: Cardinal; begin Result := False; InfoBufSize := 0; GetUrlCacheEntryInfo(PChar(Url), TInternetCacheEntryInfo(nil^), InfoBufSize); if GetLastError = ERROR_INSUFFICIENT_BUFFER then begin GetMem(Info, InfoBufSize); try Result := GetUrlCacheEntryInfo(PChar(Url), TInternetCacheEntryInfo(Info^), InfoBufSize); if Result then begin FileName := Info^.lpszLocalFileName; end; finally FreeMem(Info); end; end; end; procedure SaveImageFromIHtmlDocument2(AIHtmlDocument2: IHtmlDocument2; const ADir: string); var Images: IHTMLElementCollection; i, P: Integer; ImgElement: IHTMLImgElement; Buff: Pointer; BuffSize: DWORD; URL: String; NewName: string; ElementRender: IHTMLElementRender; Bitmap: TBitmap; begin if not Assigned(AIHtmlDocument2) then exit; Images := AIHtmlDocument2.images; if not Assigned(Images) then exit; for i := 0 to Images.length - 1 do if Succeeded(Images.item(i, 0).QueryInterface(IHTMLImgElement, ImgElement)) then try URL := ImgElement.src; NewName := URL; P := LastDelimiter('/', NewName); if P > 0 then Delete(NewName, 1, P); NewName := ChangeFileExt(ADir + NewName, '.bmp'); Buff := nil; BuffSize := 0; if not RetrieveUrlCacheEntryFile(PChar(URL), TInternetCacheEntryInfo(Buff^), BuffSize, 0) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin GetMem(Buff, BuffSize); try if RetrieveUrlCacheEntryFile(PChar(URL), TInternetCacheEntryInfo(Buff^), BuffSize, 0) then try if Succeeded(ImgElement.QueryInterface(IHTMLElementRender, ElementRender)) then try Bitmap := TBitmap.Create; try with ImgElement as IHTMLElement, Bitmap, Canvas do begin Width := offsetWidth; Height := offsetHeight; Brush.Color := clWhite; FillRect(ClipRect); ElementRender.DrawToDC(Handle); SaveToFile(NewName); end; finally Bitmap.Free; end; finally ElementRender := nil; end; finally; end; finally ImgElement := nil; end; end; finally end; end; procedure TForm1.Button1Click(Sender: TObject); begin SaveImageFromIHtmlDocument2(WebBrowser1.Document as IHTMLDocument2, 'd:\'); end; procedure TForm1.FormCreate(Sender: TObject); begin webbrowser1.Silent:=true; webbrowser1.Navigate('m.vk.com/'); end; end. В чем проблема? Спасибо! Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#2
|
||||
|
||||
![]() написано же "Синтаксическая ошибка в имени файла"!!!
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Цитата:
Код:
****************SaveToFile(NewName); Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#4
|
||||
|
||||
![]() Цитата:
Цитата:
Код:
Bitmap.SaveToFile(NewName); Код:
with ImgElement as IHTMLElement, Bitmap, Canvas do |
#5
|
|||
|
|||
![]() ставлю другое имя нет ошибок,но и картинка не сохраняется
Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#6
|
||||
|
||||
![]() Цитата:
Код:
Bitmap.SaveToFile('C:\Картинка.bmp'); |
#7
|
|||
|
|||
![]() Цитата:
Спасибо большое, делал совсем не то) помог) Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |