TWebBrowser - Hook接收活动

时间:2010-09-01 22:17:12

标签: delphi browser-automation twebbrowser

我正在尝试自动提交表单,并保存在TWebBrowser对象中显示的结果图像。

图片加载几个链式 javascript 请求(ajax),直到它最终出现在文档中。

获取此图片的最佳方式是什么? 我想到挂钩接收功能能够看到http响应(这基本上就是我的形象)。

另一种可能性是从缓存/内存中加载图像 ...

我不知道如何实际做到这一点,我希望有人可以提供帮助。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用OnDocumentCompleteOnNavigateComplete2事件(请参阅SHDocVw帮助)或等待WebBrowser位于ReadyState READYSTATE_COMPLETE,然后阅读{{ 1}}。

但您也可以(更简单的IMO)使用WebBrowser.Document直接获取响应流。

答案 1 :(得分:1)

您可以使用IHTMLDocument2对象中的images属性检索所有网址图片。

使用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;

答案 2 :(得分:1)

为了使您的应用程序更具可扩展性,您可以直接尝试EmbeddedWB。它包装IWebBrowser2并且非常方便使用。 Embarcadero在他们的RADStudio中使用EmbeddedWB。