在TWebBrowser中是否有相当于Chromium Embedded的OnResourceResponse? (DELPHI)

时间:2012-10-23 08:44:18

标签: delphi twebbrowser

我目前正在尝试查看通过Res:// imagename加载的图像。在使用res处理程序的Chromium中,我已经能够通过ResourceResponse事件执行此操作,但是,就我所知,TWebBrowser没有类似的功能。

我已经能够锁定OnDocumentComplete函数,并且能够实现一种非常低效的方式,在创建HTML文档后查看整个HTML文档......

procedure TNotesBrowser.TBrowserDocumentComplete(ASender: TObject; const pDisp:   IDispatch; var URL: OleVariant);
var
    HTMLDocument2: IHTMLDocument2;
    i            : Integer;
    Item         : IHTMLElement;
    ImageUrl     : string;
begin
    HTMLDocument2 := ((FBrowser as TWebBrowser).Document AS IHTMLDocument2);
    if HTMLDocument2 <> nil then
    begin
        for i := 0 to HTMLDocument2.images.length -1 do
        begin
        Item := HTMLDocument2.images.item(i, 'null') As IHTMLElement;
        ImageUrl:=item.getAttribute('src',0);

        if ContainsText(ImageURL,'ImageName') then
            if Assigned(FCCICONLoaded) then
                { Trigger Event }
                FCCICONLoaded(self);
        end;
    end;
end;

然而,这是一个漫长的过程。那么有没有其他人发现一个类似于Chromium的OnResourceResponse()的事件,以避免查看文档?

1 个答案:

答案 0 :(得分:1)

通过一些大量研究,我发现使用异步可插拔协议解决了这个问题,但到目前为止它只适用于将TWebBrowser直接嵌入到表单中的单个表单应用程序。可在此处找到此解决方案的源代码http://www.jasontpenny.com/blog/2010/03/23/custom-protocol-handler-in-delphi/

如果您喜欢我并且使用异步可插拔协议仍然存在问题,因为您的TWebbrowser没有直接嵌入到表单中,我打开了一个新问题: How can I find the ComServer for a TWebBrowser Asynchronous Pluggable Protocol