我需要更改TEdgeBrowser中的用户代理
如何在新的Delphi TEdgeBrowser VCL中设置用户代理?
同时欢迎任何解决方法!
我需要更改TEdgeBrowser中的用户代理
如何在新的Delphi TEdgeBrowser VCL中设置用户代理?
同时欢迎任何解决方法!
我找到了一个解决方案。
微软已经更新了WebView2并添加了更改用户代理的功能。但是Embarcadero尚未更新该组件。
创建新接口。
unit Webview2Ex;
interface
uses
WebView2;
const
IID_ICoreWebView2Settings2: TGUID = '{EE9A0F68-F46C-4E32-AC23-EF8CAC224D2A}';
type
ICoreWebView2Settings2 = interface(ICoreWebView2Settings)
['{EE9A0F68-F46C-4E32-AC23-EF8CAC224D2A}']
function Get_UserAgent(out UserAgent: PWideChar): HResult; stdcall;
function Set_UserAgent(UserAgent: PWideChar): HResult; stdcall;
end;
implementation
end.
procedure TAiForm.RBrowserCreateWebViewCompleted(Sender: TCustomEdgeBrowser;
AResult: HRESULT);
var
Ctrl2 : ICoreWebView2Settings2;
HR : HRESULT;
UA : PWideChar;
begin
//You must query SettingsInterface2 from SettingsInterface it's important
Sender.SettingsInterface.QueryInterface(IID_ICoreWebView2Settings2, Ctrl2);
if not Assigned(Ctrl2) then
raise Exception.Create('ICoreWebView2Settings2 not found');
UA := 'NEW UA';
HR := Ctrl2.Set_UserAgent(UA);
HR := Ctrl2.Get_UserAgent(UA);
if not SUCCEEDED(HR) then
raise Exception.Create('Get_UserAgent failed')
else ShowMessage(ua);
end;
https://developer.microsoft.com/en-us/microsoft-edge/webview2/
如果您想更新所有接口,请阅读本文。
WebView2(TEdgeBrowser)已更新Delphi接口(例如ICoreWebView2Controller2)
UserAgent
是可配置的,你认为它必须被存储在某个地方吗?难道不可能是硬编码的吗? - Remy Lebeau