WebBrowser1.ExecWB(4, 0);
Это ты просто вызываешь команду IE на сохранение страницы, естественно, при этом выскакивает диалог выбора каталога.
Простого варианта, имхо нет. Ручками, используя объектную модель IE парсить страницу и по полученным линкам загружать и сохранять картинки. Примерно так:
//загрузка имиджа по линку в поток
function LoadImage(src:string; str:TMemoryStream):boolean;
var
istr: IStream;
statstg: TStatStg;
buf: string;
pos: Int64;
cb: Integer;
begin
Result := False;
try
istr := TStreamAdapter.Create(str, soReference) as IStream;
If URLOpenBlockingStream(nil, PChar(src), istr, 0, nil)<>S_OK then
exit;
istr.Stat(statstg, 0);
If statstg.cbSize = 0 then
exit;
SetLength(buf, statstg.cbSize);
istr.Seek(0, 0, pos);
istr.Read(@buf[1], statstg.cbSize, @cb);
str.Position:=0;
str.Write(buf[1], statstg.cbSize);
str.Position:=0;
except
exit;
end;
Result := True;
end;
//парсим все имеджи страницы
procedure ParsImages;
var
doc: IHTMLDocument2;
allEl: IHTMLElementCollection;
img: IHTMLElement;
i: Integer;
srcImg: string;
str: TMemoryStream;
begin
doc := WebBrowser1.Document as IHTMLDocument2;
If doc = nil then
exit;
allEl := doc.all;
If allEl = nil then
exit;
allEl := allEl.tags('img') as IHTMLElementCollection;
For i:=0 to allEl.length-1 do
begin
img:=allEl.item(i, i) as IHTMLElement;
If img=nil then
continue;
srcImg := string(img.getAttribute('src', 0));//получили линк на картинку
//код загрузки по линку и сохранения картинки
str := TMemoryStream.Create;
try
If LoadImage(srcImg, str) then
str.SaveToFile('MyFile.gif');
finally
str.Free;
end;
end;
З.Ы. Необходимо добавить юниты mshtml и ActiveX