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.
在CreateWebView完成时创建处理程序
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;
2条答案
按热度按时间ie3xauqp1#
根据Microsoft documentation的说法,这只在预发布版本中可用,所以它在 Delphi
TEdgeBrowser
中还不可用。91zkwejq2#
我找到了解决办法。
微软已经更新了WebView2并增加了改变用户代理的功能。但是Embarcadero还没有更新该组件。
创建新接口
在CreateWebView完成时创建处理程序
还需要从Microsoft更新WebView2组件
https://developer.microsoft.com/en-us/microsoft-edge/webview2/
如果你想更新所有的接口阅读本文
WebView2 (TEdgeBrowser) updated Delphi interface (e.g. ICoreWebView2Controller2)