TWebBrowser - событие приема хука - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь автоматически отправить форму и сохранить полученное изображение, которое отображается в объекте TWebBrowser.

Изображение загружается через несколько связанных javascript запросов (ajax) до тех пор, пока оно не появится в документе.

Как лучше всего получить это изображение? Я думал о подключении функции приема , чтобы иметь возможность увидеть HTTP-ответ (который в основном будет моим изображением).

Другой возможностью может быть загрузка изображения из кеша / памяти ...

Я понятия не имею, как на практике это сделать, я надеюсь, что кто-то может помочь.

Спасибо.

Ответы [ 3 ]

1 голос
/ 02 сентября 2010

вы можете получить все изображения URL, используя свойство images из объекта IHTMLDocument2.

см. Этот пример с помощью события OnDocumentComplete .

procedure TForm2.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
HTMLDocument2: IHTMLDocument2;
i            : Integer;
Item         : IHTMLElement;
ImageUrl     : string;
begin
    HTMLDocument2 := (WebBrowser1.Document AS IHTMLDocument2);
    for i := 0 to HTMLDocument2.images.length -1 do
    begin
    Item := HTMLDocument2.images.item(i, null) As IHTMLElement;
    ImageUrl:=item.getAttribute('src',0);
     //do your stuff with the url image retrieved
    end;
end;
1 голос
/ 02 сентября 2010

Чтобы быть более масштабируемым с вашим приложением, вы можете напрямую попробовать EmbeddedWB . Он оборачивает IWebBrowser2 и очень удобен в использовании. Embarcadero использует EmbeddedWB в своем RADStudio.

1 голос
/ 02 сентября 2010

Вы можете использовать события OnDocumentComplete или OnNavigateComplete2 (см. Справку SHDocVw) или подождать, пока WebBrowser окажется в ReadyState READYSTATE_COMPLETE, а затем прочитать из WebBrowser.Document.

Но вы также можете (проще IMO) использовать TIdHTTP.Get для непосредственного получения потока ответов.

...