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;

浙公网安备 33010602011771号