WebView2 是微軟基于 Chromium 內核開發的一種新型的 Web 交互組件,可以讓你在自己的應用程序中嵌入一個完整的瀏覽器內核,這樣你的應用程序就可以直接使用 Chromium 的 HTML、CSS、JavaScript 引擎,以及其他一些高級的 Web 技術。
WebView2 可以用來構建嵌入式瀏覽器、Web 應用程序、Web 控件、Web 游戲等應用程序。而且它還可以很方便地集成到 C++、C#、VB.NET、Python 等各種主流編程語言中,這樣你就可以用你最熟悉的語言來開發和調試你的應用程序。
在使用 WebView2 的時候,我們可以用它來生成一個 exe 文件,下面就來詳細介紹一下它的原理和具體操作。
1. 原理
WebView2 的原理就是通過將 Chromium 內核嵌入到我們的應用程序中,實現在應用程序中直接使用 Chromium 的 HTML、CSS、JavaScript 引擎,以及其他一些高級的 Web 技術。
具體實現方式是通過將 WebView2 控件添加到我們的應用程序中,在控件中加載 Chromium 內核,以此來實現嵌入式瀏覽器的功能。我們可以通過編寫代碼來控制 WebView2 控件的行為,從而實現我們自己的應用程序。
2. 具體操作
下面是具體的操作步驟:
(1)首先,我們需要下載并安裝 WebView2 運行時。我們可以在微軟官網上下載最新版本的 WebView2 運行時。
(2)接下來,我們需要在我們的應用程序中添加 WebView2 控件。我們可以使用 Visual Studio 的設計器來添加控件,或者手動編寫代碼來添加控件。
(3)然后,我們需要在代碼中初始化 WebView2 控件。我們可以使用 WebView2Runtime 類來初始化 WebView2 控件,例如:
“`
#include
int main()
{
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
// 創建 WebView2Runtime 實例
桌面應用 Microsoft::WRL::ComPtr webView2Runtime;
hr = CreateWebView2Runtime(
/* Edge WebView2 運行時版本號 */ nullptr,
/* WebView2 運行時 ID */ nullptr,
/* IWebView2CreateWebView2EnvironmentCompletedHandler */ nullptr,
&webView2Runtime);
if (SUCCEEDED(hr))
{
// 創建 WebView2 控件實例
Microsoft::WRL::ComPtr webView2Environment;
hr = webView2Runtime->CreateWebView2Environment(
/* IWebView2CreateWebView2EnvironmentCompletedHandler */ nullptr,
/* UserData */ nullptr,
&webView2Environment);
if (SUCCEEDED(hr))
{
// 創建 WebView2 控件
Microsoft::WRL::ComPtr webView2WebView;
hr = webView2Environment->CreateWebView(
/* Parent window */ nullptr,
/* Callback 接口 */ nullptr,
&webView2WebView);
if (SUCCEEDED(hr))
{
// 初始化 WebView2 控件
hr = webView2WebView->EnsureCoreWebView2Async(
/* Callback 接口 */ nullptr);
}
}
}
CoUninitialize();
}
return 0;
}
“`
(4)最后,我們需要在代碼中加載 URL 或 HTML 內容。我們可以使用 WebView2 控件的 NavigateToString() 或 Navigate() 方法來加載 URL 或 HTML 內容,例如:
“`
#include
int main()
{
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
// 創建 WebView2Runtime 實例
Microsoft::WRL::ComPtr webView2Runtime;
hr = CreateWebView2Runtime(
/* Edge WebView2 運行時版本號 */
nullptr,
/* WebView2 運行時 ID */ nullptr,
/* IWebView2CreateWebView2EnvironmentCompletedHandler */ nullptr,
&webView2Runtime);
if (SUCCEEDED(hr))
{
// 創建 WebView2 控件實例
Microsoft::WRL::ComPtr webView2Environment;
hr = webView2Runtime->CreateWebView2Environment(
/* IWebView前端html打包2CreateWebView2EnvironmentCompletedHandler */ nullptr,
/* UserData */ nullptr,
&webView2Environment);
if (SUCCEEDED(hr))
{
// 創建 WebView2 控件
Microsoft::WRL::ComPtr webView2WebView;
hr = webView2Environment->CreateWebView(
/* Parent window */ nullptr,
/* Callback 接口 */ nullptr,
&webView2WebView);
if (SUCCEEDED(hr))
{
// 初始化 WebView2 控件
hr = webView2WebView->EnsureCoreWebView2Async(
/* Callback 接口 */ nullptr);
// 加載 URL 或 HTML 內容
webView2WebView->Navigate(L”https://www.baidu.com”);
}
}
}
CoUninitialize();
}
return 0;
}
“`
通過以上步驟,我們就可以生成一個包含 WebView2 控件的 exe 文件了。