目录
上一篇文章 简单介绍了WebView2的集成与试用,这篇文章借着官方demo(WebView2APISample)来大体的记录一下集成情况。所有的测试实例都基于c++代码。
一、初始化环境
因为WebView2是一个组件,肯定少不了COM组件的初始化操作,因此在EXE装载时要调用COM组件的初始化代码:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)
在EXE退出时,要去卸载加载的COM组件的相关环境,调用下面的代码即可。
CoUninitialize()
二、检测组件是否安装
初始化大环境完成后,第一时间是检测该电脑上是否安装WebView2 Runtime组件。目前检测用户机上是否安装组件,有两种方法:
第一种方法就是:检测注册表选项。即检查以下 pv (REG_SZ)
两个位置的 WebView2 运行时的注册表项。即如下图所示: 64位机器的注册表选项如下图所示:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
32位机器的注册表选项如下图所示:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
第二种方法就是调用GetAvailableCoreWebView2BrowserVersionString函数。该函数来该电脑上是否有版本号,如果有则返回目前所使用的版本号。
这里需要注意的是,我们的EXE需要调用ppapi插件,因此需要去判断启动的WebView2 Runtime组件是32位还是64位,目前接口上没有相关说明,我用了笨方法,去检查启动的EXE是32位还是64位。
三、设置启动环境并创建WebView
WebView2组件提供了两个函数: CreateCoreWebView2Environment 和 CreateCoreWebView2EnvironmentWithOptions,从中我们可以为浏览器的 UI 和内容创建两个单独的环境。我建议使用第二个函数,因为它的参数中可以指定用户启动的 WebView2组件版本、默认用户数据文件夹位置以及浏览器标志等信息,因此不用使用Edge自带的默认设置。 该方法执行成功后,则在CreateCoreWebView2EnvironmentWithOptions函数的最后一个参数回调函数中去执行CreateCoreWebView2Controller函数,创建出 WebView对象,然后再在该函数的回调函数中去运行get_CoreWebView2
方法并,获取关联的 WebView2对象。然后进行一些对应的浏览器设置,然后调用Navigate方法,就可以导航到指定网址,具体的demo详见WebView2APISample.
Edge官网提供的接口说明很全,我这里不用详细介绍了,去看msdn以及demo吧,有什么问题大家可以一起探讨探讨。
四、参考资料
1、分发 WebView2 应用和 WebView2 运行时 - Microsoft Edge Development | Microsoft Docs
2、WebView2 Win32 C++ Reference | Microsoft Docs
3、Win32 应用中的 WebView2 入门 - Microsoft Edge Development | Microsoft Docs