delphi TEdgeBrowser 替换网页资源

通过 ICoreWebView2_2 接口的 add_WebResourceResponseReceived 来实现替换网页资源

整体代码复杂,只显示部分. 详情请查看源码

源码下载 ,delphi 12.1 win7 64 位 , edge dev 109 版测试通过

procedure TEdgeReplaceRespone.OnWebResourceRequestedTing(Sender: ICoreWebView2; Args: ICoreWebView2WebResourceRequestedEventArgs);
var
  LResponse: ICoreWebView2WebResourceResponse;
  // LResponseHeaders: ICoreWebView2HttpResponseHeaders;
  LRequest: ICoreWebView2WebResourceRequest;
  LRequestHeaders: ICoreWebView2HttpRequestHeaders;
  // LIt: ICoreWebView2HttpHeadersCollectionIterator;
  pUri: PWideChar;
  sUri: string;
  M: TMemoryStream;
  LStream: TStreamAdapter;
  LE: ICoreWebView2Environment;
  sHeader: string;
begin

  Args.Get_Request(LRequest); // 获取 LRequest
  LRequest.Get_Headers(LRequestHeaders);

  LRequest.Get_uri(pUri); // LRequest 获取到网址
  sUri := StrPas(pUri);

  if PosEx('logo.png', sUri) > 0 then
  begin

    if not ReplacePic then // 不替换
      exit;

    sHeader := LoadTextFromFile('h.txt');

    M := TMemoryStream.Create;
    M.LoadFromFile('logo2.png');
    M.Position := 0;

    LStream := TStreamAdapter.Create(M);

    LE := Webview2Horse.Webview2Environment as ICoreWebView2Environment;
    LE.CreateWebResourceResponse(LStream, 200, 'OK', pchar(sHeader), LResponse);
    Args.Set_Response(LResponse);

    DispMsg('logo.png,已被替换');

  end;

end;

 

posted on 2025-07-20 00:29  晓不得2013  阅读(242)  评论(0)    收藏  举报

导航