关于 Edge Browser 的安装

概念

Delphi 的 VCL 控件,提供了一个基于 WebView2 的 Edge Browser,使用它可以支持 H5 的页面。而传统的 TWebBrowser 是基于 IE 的,H5 页面支持得不好。

安装和使用

因此,如果要在程序里面放一个浏览器,尽量使用 TEdgeBrowser。

使用方法很简单,控件面板上找到 TEdgeBrowser,拖一个到当前的 Form 上,就可以了。

比如我在 Form 上面放一个按钮,写代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
  EdgeBrowser1.Navigate('https://www.qq.com'); //这里单纯输入域名不行,必须加上 https://
end;

就可以了。

问题来了

按照上面的操作,你会发现,点了按钮,什么事都没发生,页面也没有出来。

因为,你的程序还需要一个 DLL。使用 TWebBrowser 不需要额外的 DLL 是因为 Windows 系统内置了。而这个 WebView2 是系统没有内置的。

如何安装 WebView2

Delphi IDE 的菜单:Tools / Getit package manager 点开,在 GetIt 的界面上找到搜索栏,输入 EdgeView2,出来 EdgeView2 SDK,点击 Install 安装它。在线安装完成后,你可以在这里找到那个 DLL:

C:\Program Files (x86)\Embarcadero\Studio\23.0\Redist\win32

上面文件夹是 Win32 的。如果你的程序是64位的程序,你在上面文件夹的上一级能看到 64 位的。

在文件夹里面找文件名:WebView2Loader.dll

把这个文件拷贝到你的 EXE 程序的文件夹底下,再次执行你的 EXE,这次,网页出来了。

搞定

### 检测 Edge 浏览器联网状态的方法 在 Delphi 12 中,可以通过调用 Windows API 或者使用 TIdHTTP 组件来检测 Edge 浏览器的联网状态。以下方法可以实现这一目标: #### 方法一:通过 WinINet API 检测网络连接 WinINet 是 Windows 提供的一组 API,用于处理 Internet 连接和操作。可以使用 `InternetGetConnectedState` 函数来检查当前设备是否已连接到互联网。 ```delphi uses Winapi.WinInet; function IsInternetConnected: Boolean; var Flags: DWORD; begin Flags := 0; Result := InternetGetConnectedState(@Flags, 0); end; ``` 此函数会返回一个布尔值,表示当前系统是否已连接到互联网[^3]。需要注意的是,这仅能检测系统是否有网络连接,并不能直接检测 Edge 浏览器的状态。 #### 方法二:通过尝试访问特定 URL 另一种方法是尝试通过 HTTP 请求访问一个已知的 URL(例如 Microsoft 的服务器)。如果请求成功,则说明 Edge 浏览器可能处于联网状态。 ```delphi uses IdHTTP; function IsEdgeOnline(const TestURL: string): Boolean; var IdHTTP: TIdHTTP; begin IdHTTP := TIdHTTP.Create(nil); try try IdHTTP.Head(TestURL); // 使用 HEAD 请求减少数据传输量 Result := True; except on E: Exception do Result := False; end; finally IdHTTP.Free; end; end; ``` 调用时可以使用如下代码: ```delphi if IsEdgeOnline('https://www.microsoft.com') then ShowMessage('Edge is online') else ShowMessage('Edge is offline'); ``` 这种方法依赖于第三方库 Indy (`TIdHTTP`),需要确保项目中已包含相关单元[^4]。 #### 方法三:检查 Edge 浏览器进程并结合网络状态 可以通过枚举 Edge 浏览器的进程,同时结合上述方法来判断其联网状态。可以使用 `CreateToolhelp32Snapshot` 和其他相关函数来获取 Edge 浏览器的进程信息。 ```delphi uses TlHelp32; function IsEdgeRunning: Boolean; var SnapshotHandle: THandle; ProcessEntry: TProcessEntry32; begin Result := False; SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if SnapshotHandle <> INVALID_HANDLE_VALUE then begin ProcessEntry.dwSize := SizeOf(ProcessEntry); if Process32First(SnapshotHandle, ProcessEntry) then begin repeat if (CompareText(ProcessEntry.szExeFile, 'msedge.exe') = 0) then begin Result := True; Break; end; until not Process32Next(SnapshotHandle, ProcessEntry); end; CloseHandle(SnapshotHandle); end; end; ``` 结合网络状态检测,可以进一步验证 Edge 浏览器是否在线。 --- ### 注意事项 - 上述方法只能间接检测 Edge 浏览器的联网状态。无法直接访问 Edge 浏览器的内部状态。 - 如果需要更精确的结果,可以尝试通过 COM 接口与 Edge 浏览器交互,但这需要额外的开发工作和权限[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值