当前位置: 首页 > article >正文

基于.Net CEF 实现 Vue 等前端技术栈构建 Windows 窗体应用

零、参考资料

1、https://github.com/cefsharp/CefSharp/wiki/Quick-Start-For-MS-.Net-5.0-or-greater

2、https://github.com/cefsharp/CefSharp/wiki/Quick-Start

3、https://github.com/cefsharp/CefSharp/wiki/General-Usage#javascript-integration

一、安装 Nuget 包

https://www.nuget.org/packages/CefSharp.WinForms

安装 CefSharp.WinForms 包后会显示 Readme.txt,

二、配置项目

<!-- CefWindowsFormsApp.csproj -->
<PropertyGroup Condition="'$(PlatformTarget)' == 'x64'">
  <RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x64</RuntimeIdentifier>
  <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>

三、加载远程网页示例

使用 ChromiumWebBrowser 加载百度首页,

// Form1.cs
using CefSharp;
using CefSharp.WinForms;
using System.Windows.Forms;

namespace CefWindowsFormsApp
{
    public partial class Form1 : Form
    {
        private static ChromiumWebBrowser browser;

        public Form1()
        {
            InitializeComponent();
            AddChromiumWebBrowser();
        }

        /// <summary>
        /// Create a new instance in code or add via the designer
        /// </summary>
        private void AddChromiumWebBrowser()
        {
            browser = new ChromiumWebBrowser("www.baidu.com");
            this.Controls.Add(browser);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Load a url
            browser.LoadUrl("https://www.baidu.com/");
        }
    }
}

这这个示例中,我们引入了 CefSharp 库,在 Form1 窗体中添加了浏览器控件 ChromiumWebBrowser ,并且在窗体启动时加载百度首页,

四、加载本地网页示例

首先创建一个 Vue 项目,

# 使用 Vite
cnpm create vite@latest

# cd vite-project
# cnpm i

接着完成前端的开发之后,打包静态资源,

npm run build

然后在 WinForm 项目下创建 Resources 文件夹,把前端打包的 dist 文件夹下的文件全部复制过来,并且文件属性设置为“嵌入的资源”,

最后通过 RegisterScheme 注册为本地资源访问,

// Form1.cs
using CefSharp;
using CefSharp.SchemeHandler;
using CefSharp.WinForms;
using System.Windows.Forms;

namespace CefWindowsFormsApp
{
    public partial class Form1 : Form
    {
        private static ChromiumWebBrowser browser;

        public Form1()
        {
            InitializeComponent();
            AddChromiumWebBrowser();
        }

        /// <summary>
        /// Create a new instance in code or add via the designer
        /// </summary>
        private void AddChromiumWebBrowser()
        {
            InitBrowser();

            browser = new ChromiumWebBrowser("http://cefsharp.test");
            this.Controls.Add(browser);

        }

        public static void InitBrowser()
        {
            // Pseudo code; you probably need more in your CefSettings also.
            var settings = new CefSettings();

            settings.RegisterScheme(new CefCustomScheme
            {
                SchemeName = "http",
                DomainName = "cefsharp.test",
                SchemeHandlerFactory = new FolderSchemeHandlerFactory(rootFolder: @"..\..\..\..\CefWindowsFormsApp\Resources",
                            hostName: "cefsharp.test", //Optional param no hostname/domain checking if null
                            defaultPage: "index.html") //Optional param will default to index.html
            });

            Cef.Initialize(settings);
        }

        private void Form1_Load

http://www.kler.cn/a/105992.html

相关文章:

  • C++内存管理 - new/delete
  • Area-Composition模型部署指南
  • 【分布式技术】分布式缓存技术-旁路缓存模式(Cache Aside Pattern)
  • 基于语法树的SQL自动改写工具开发系列(2)-使用PYTHON进行简单SQL改写的开发实战
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
  • stdin文件流指针
  • 【机器学习合集】优化目标与评估指标合集 ->(个人学习记录笔记)
  • 简单的前端语言
  • 21.9 Python 使用Selenium库
  • 用爬虫代码爬取高音质音频示例
  • 微信native支付对接
  • 计算机网络-应用层(2)
  • V8 引擎中的垃圾收集器
  • 202212 青少年等级考试机器人实操真题六级试卷
  • 全自动洗衣机什么牌子好?迷你洗衣机品牌推荐
  • 在PowerBI中提取IFC文件中的数据
  • [Hive] 常见函数
  • BUUCTF刷题记录
  • echarts将展示全天的数据,如一天的电费,一个停车场一天的饱和度等问题
  • Qt中的单例模式
  • 游戏研发的解决方案有哪些?
  • onclick事件的用法
  • uni-app:实现picker下拉列表的默认值设置
  • kafka丢数据的原因
  • Hadoop3.0大数据处理学习1(Haddop介绍、部署、Hive部署)
  • 【Python · PyTorch】数据基础