![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем привет есть код
Код:
uses
ExtCtrls, mshtml, OleCtrls, ClipBrd, SHDocVw, WinInet, shellapi, URLMon,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,JPEG;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
type
IHTMLElementRender = interface(IUnknown)
['{3050F669-98B5-11CF-BB82-00AA00BDCE0B}']
function DrawToDC
( _hDC: HDC
): HResult; stdcall;
end;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
// URL Location
SourceFile = 'ссылка на нужную картинку';
// Where to save the file
DestFile = 'c:\temp\капча.gif';
begin
if DownloadFile(SourceFile, DestFile) then
begin
ShowMessage('Download succesful!');
end
else
ShowMessage('Error while downloading ' + SourceFile)
end;он выдерает капчу с ссылки,а как сделать так что бы он выдерал эту картинку сразу с браузера, а то капча меняется и картинки не соответствуют друг другу( |
|
#2
|
|||
|
|||
|
Лезть в DOM в браузере и выуживать оттуда загруженную картинку.
|
|
#3
|
|||
|
|||
|
а можно на примере?
|
|
#4
|
||||
|
||||
|
поищи в моих сообщениях - недавно писал как сохранить картинки из браузера.
вот: http://www.delphisources.ru/forum/sh...6&postcount=25 кстати тема твоя))) Последний раз редактировалось NumLock, 09.02.2012 в 09:13. |
|
#5
|
|||
|
|||
|
так,то оно так,но мне надо что бы только 1 картинку сохраняло а тут все, и к тому же в ХЕ почему то не пашет(
|
|
#7
|
|||
|
|||
|
=)
но я вообще без понятий как выдрать каптчу прям с браузера) поэтому и спрашиваю) |
|
#8
|
||||
|
||||
|
У тебя есть код, который выдирает все изображения. Разберись, как он работает, и напиши свой, который выдирает только необходимое. Не можешь? Кругом-марш в раздел "Работа".
|
|
#9
|
|||
|
|||
|
Кто нибудь подскажитеее плззз
|
|
#10
|
||||
|
||||
|
Код:
function SaveBitmaps(AWebBrowser: TWebBrowser; APath: String; AStrings: TStrings = nil): Integer;
var
AHTMLDocument2: IHTMLDocument2;
i: Integer;
AHTMLImgElement: IHTMLImgElement;
AHTMLElementRender: IHTMLElementRender;
ABitmap: TBitmap;
j: Integer;
begin
APath:=IncludeTrailingPathDelimiter(APath);
AHTMLDocument2:=AWebBrowser.Document as IHTMLDocument2;
Result:=AHTMLDocument2.images.length;
j:=0;
for i:=0 to Result-1 do
begin
AHTMLImgElement:=AHTMLDocument2.images.item(i, '') as IHTMLImgElement;
if (AHTMLImgElement.width>0) and (AHTMLImgElement.height>0) then
begin
AHTMLElementRender:=AHTMLImgElement as IHTMLElementRender;
ABitmap:=TBitmap.Create;
try
ABitmap.Width:=AHTMLImgElement.width;
ABitmap.Height:=AHTMLImgElement.height;
AHTMLElementRender.DrawToDC(ABitmap.Canvas.Handle);
ABitmap.SaveToFile(APath+Format('%.8d.bmp', [j]));
if AStrings<>nil then AStrings.Add(AHTMLImgElement.src);
Inc(j);
finally
ABitmap.Free;
end;
end;
end;
Result:=j;
end; |