超碰人人人人人,色婷婷综合久久久久中文一区二区,国产-第1页-浮力影院,欧美老妇另类久久久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# WebView2 應(yīng)用的處理模型

admin
2025年4月2日 22:16 本文熱度 151

WebView2 是 Microsoft 提供的一個(gè)控件,允許開發(fā)者在其應(yīng)用程序中嵌入 Web 內(nèi)容。它基于 Microsoft Edge (Chromium) 引擎,提供了現(xiàn)代 Web 技術(shù)的支持。WebView2 的處理模型是理解其如何與主機(jī)應(yīng)用程序交互的關(guān)鍵。

處理模型概述

WebView2 的處理模型主要包括以下幾個(gè)方面:

  1. 進(jìn)程模型
    • WebView2 使用多進(jìn)程架構(gòu),主機(jī)應(yīng)用程序和 Web 內(nèi)容在不同的進(jìn)程中運(yùn)行。這種設(shè)計(jì)提高了安全性和穩(wěn)定性,因?yàn)?Web 內(nèi)容的崩潰不會(huì)影響主機(jī)應(yīng)用程序。
    • WebView2 創(chuàng)建了一個(gè)或多個(gè)渲染進(jìn)程來處理 Web 內(nèi)容,這些進(jìn)程與主機(jī)進(jìn)程通過 IPC(進(jìn)程間通信)進(jìn)行通信。
  2. 主機(jī)進(jìn)程
    • 主機(jī)進(jìn)程是運(yùn)行 WebView2 控件的應(yīng)用程序。它負(fù)責(zé)管理 WebView2 控件的生命周期、處理用戶輸入和與 Web 內(nèi)容的交互。
  3. 渲染進(jìn)程
    • 渲染進(jìn)程負(fù)責(zé)呈現(xiàn) Web 內(nèi)容。每個(gè) WebView2 控件可以有一個(gè)或多個(gè)渲染進(jìn)程,這取決于應(yīng)用程序的需求和配置。
  4. 通信機(jī)制
    • 主機(jī)進(jìn)程和渲染進(jìn)程之間的通信通過 `PostMessage` 和 `ExecuteScriptAsync` 等方法實(shí)現(xiàn)。這使得主機(jī)應(yīng)用程序能夠向 Web 內(nèi)容發(fā)送消息,并接收來自 Web 內(nèi)容的響應(yīng)。

示例代碼

以下是一個(gè)簡(jiǎn)單的 C# 示例,展示如何在 WinForms 應(yīng)用程序中使用 WebView2 控件,并實(shí)現(xiàn)基本的進(jìn)程間通信。

安裝 WebView2 SDK 

首先,確保在項(xiàng)目中安裝了 WebView2 SDK??梢酝ㄟ^ NuGet 包管理器安裝:

Install-Package Microsoft.Web.WebView2

創(chuàng)建 WinForms 應(yīng)用程序 

創(chuàng)建一個(gè)新的 WinForms 應(yīng)用程序,并在主窗體中添加 WebView2 控件。

示例代碼 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Web.WebView2.WinForms;

namespace AppWebView2
{
    public partial class Form6 : Form
    {
        private WebView2 webView;
        public Form6()
        
{
            InitializeComponent();
            InitializeWebView();
        }

        private async void InitializeWebView()
        
{

            webView = new WebView2
            {
                Dock = DockStyle.Fill
            };
            this.panel1.Controls.Add(webView);

            // 初始化 WebView2 控件
            await webView.EnsureCoreWebView2Async(null);
            string htmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.html");
            webView.Source = new Uri("file://" + htmlPath);

            // 處理來自 Web 內(nèi)容的消息
            webView.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived;
        }

        private void CoreWebView2_WebMessageReceived(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e)
        
{
            string message = e.TryGetWebMessageAsString();
            MessageBox.Show($"Received message from web: {message}");
        }


        private void btnSendToWeb_Click(object sender, EventArgs e)
        
{
            // 向 Web 內(nèi)容發(fā)送消息
            webView.CoreWebView2.PostWebMessageAsString("Hello from the host application!");
        }
    }
}

test.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>

    <div id="divMsg"></div>

    <input type="button" value="Send Message"  onclick="sendMessage()"/>

    <script>
        function sendMessage({
            window.chrome.webview.postMessage('Hello from web content');
        }

        // Web 內(nèi)容監(jiān)聽主機(jī)消息
        window.chrome.webview.addEventListener('message', (event) => {
            console.log('Received message:', event.data);
            document.getElementById("divMsg").innerHTML = event.data;
        });

    
</script>
</body>
</html>

?

運(yùn)行示例 

在運(yùn)行應(yīng)用程序后,WebView2 控件將加載指定的 URL。您可以通過調(diào)用 SendMessageToWeb 方法向 Web 內(nèi)容發(fā)送消息,并在 Web 內(nèi)容中使用 JavaScript 代碼接收該消息。

結(jié)論

WebView2 的處理模型為開發(fā)者提供了強(qiáng)大的功能,使得在桌面應(yīng)用程序中嵌入 Web 內(nèi)容變得簡(jiǎn)單而高效。通過理解其進(jìn)程和通信機(jī)制,開發(fā)者可以創(chuàng)建更安全、更穩(wěn)定的應(yīng)用程序。


閱讀原文:原文鏈接


該文章在 2025/4/3 18:23:07 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved