.Net WebView2 プロジェクト、WEB ページの Chromium エンジン埋め込み実装

.Net WebView2 プロジェクト、WEB ページの Chromium エンジン埋め込み実装

WebView2 プロジェクトは、Microsoft のオペレーティングシステム win10 および win11 のサポートにより、非常に有利です。

最終更新 2022/05/17 20:47
蓝创精英团队
読了目安 2 分
カテゴリ
.NET
タグ
.NET C# WebView2

WebView2 プロジェクトは、Microsoft のオペレーティングシステムである Windows 10 および Windows 11 のサポートを受けており、最低限、生成されるプロジェクトファイルのサイズは非常に小さく、私の場合は 3.6MB です。CefSharp プロジェクトが軽く 100MB を超えるサイズになるのと比較すると、配布サイズを大幅に削減できるため、十分に研究する価値があります。

開発に必要な条件

  1. ランタイム

コントロールパネルからも、このランタイムが既にインストールされていることを確認できます。

インストールされていない場合は、上記のアドレスからダウンロードしてインストールしてください。

具体的なアドレス: https://go.microsoft.com/fwlink/p/?LinkId=2124703

  1. NuGet パッケージ

以下の NuGet パッケージを導入する必要があります。

Microsoft.Web.WebView2

インストール後、ここではデフォルトで WinForms UI フレームワークを使用しています。

新しいプロジェクトを作成します(WinForms を参考として)。

WebView2 が表示されない場合は、プロジェクトを再起動すると表示されるようになります。

同時に、見やすくするために Dock プロパティを Fill に設定して全画面表示にします。

ここで、基本的な環境コードを追加すると、ページが起動できるようになります。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Resize += new EventHandler(Form_Resize);
        webView21.CoreWebView2InitializationCompleted += WebView21_CoreWebView2InitializationCompleted;
        Initialize();
    }
        /// <summary>
        /// ウィンドウリサイズに合わせて WebView2 を自動調整
        /// </summary>
    private void Form_Resize(object sender, EventArgs e)
    {
        webView21.Size = ClientSize - new Size(webView21.Location);
    }
    /// <summary>
    /// WebView2 の初期化完了イベント
    /// </summary>
    private void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
    {
        webView21.CoreWebView2.Navigate("https://www.baidu.com/");
    }
    /// <summary>
    /// WebView2 の初期化
    /// </summary>
    async void Initialize()
    {
        var result = await CoreWebView2Environment.CreateAsync(null, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cache"), null);
        await webView21.EnsureCoreWebView2Async(result);
    }
}

このページは自由にリサイズでき、非常に便利です。

この行でローカルキャッシュを有効にしています。この設定により、ログインしたアカウントは再起動後も保持されます(データがローカルキャッシュに保存されるため)。

var result = await CoreWebView2Environment.CreateAsync(null, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cache"), null);
webView21.CoreWebView2.OpenDevToolsWindow();

開発者ツールを開きます(右クリック →「要素を検証」からも開けます)。

次に、JavaScript スクリプトを実行して、何か文字を入力してから検索ボタンをクリックします。

この機能を実現するには、ボタンを追加する必要があります。

以下のスクリプトを追加するだけです。

/// <summary>
/// ボタンクリックイベント
/// </summary>
private async void button1_Click(object sender, EventArgs e)
{
    //開発者ツールを開く(右クリック →「要素を検証」からも開けます)
    // webView21.CoreWebView2.OpenDevToolsWindow();

    //検索ボックスに内容を入力
    await webView21.CoreWebView2.ExecuteScriptAsync("document.querySelector('#kw').value='1234'");
    //検索を実行
    await webView21.CoreWebView2.ExecuteScriptAsync("document.querySelector('#su').click();");
}

これが実装結果です。

以上で、完全な WebView2 プロジェクトのサンプルが完成しました。

以下は対応するコードのアドレスです。

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2026/04/22

各OSバージョンの.NETサポート状況(250707更新)

仮想マシンとテストマシンを使用して、各OSバージョンの.NETサポート状況を確認します。OSインストール後、対応するランタイムをインストールし、Stardustエージェントを実行できることを確認します(合格条件)。

続きを読む
同じカテゴリ / 同じタグ 2026/02/07

AOTの使用経験のまとめ

プロジェクト作成当初から、新機能を追加したり新しい構文を使用したりした場合には、すぐにAOT公開テストを実施するという良い習慣を身につけるべきです。

続きを読む