WinForm使用CefSharp,嵌入浏览器

简介: WinForm使用CefSharp,嵌入浏览器

引入库:CefSharp.WinForms

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 大屏Win
{
    public partial class Form1 : Form
    {
        static string url = System.Configuration.ConfigurationManager.AppSettings["url"].ToString();//从配置文件中读取要打开的url
        static ChromiumWebBrowser chromeBrowser = null;
        public Form1()
        {
            InitializeComponent();
            try
            {
                CefSettings settings = new CefSettings();
                settings.Locale = "zh-CN";//中文环境
                settings.AcceptLanguageList = "zh-CN";//中文环境
                settings.CachePath = System.IO.Directory.GetCurrentDirectory()+"\\cache";//设置缓存
                Cef.Initialize(settings);
                chromeBrowser = new ChromiumWebBrowser(url);
                chromeBrowser.AddressChanged += Browser_AddressChanged;//监听地址变化
                this.Controls.Add(chromeBrowser);
                chromeBrowser.Dock = DockStyle.Fill;
                //js和cs交互
                chromeBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
                chromeBrowser.JavascriptObjectRepository.Register("yfcsobj", new yfcsobj(), isAsync: true, options: BindingOptions.DefaultBinder);
                chromeBrowser.ExecuteScriptAsync("refreshdata()");//c# 调用 js方法
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Application.Exit();
            }
        }
        private void Browser_AddressChanged(object sender, AddressChangedEventArgs e)
        {
            //MessageBox.Show(e.Address);
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
        //监听键盘按键
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.F12)
            {
                chromeBrowser.ShowDevTools();//打开调试模式
            }
        }
    }
}
    public class yfcsobj
    {
        public void test(string msg)
        {
           MessageBox.Show(msg);
        }  
        public void closeApp()
        {
            //彻底关闭进程
            System.Environment.Exit(0);
            Application.Exit();
        }
    }

html中使用

<html>
<body>
<button onclick="test()">test</button>
<button onclick="test2()">test2</button>
<script>
function test(){
  yfcsobj.test('test js');
}
function test2(){
  yfcsobj.closeApp();
}
</script>
</body>
<html>
相关文章
|
5月前
|
前端开发 JavaScript Java
Java 开发中 Swing 界面嵌入浏览器实现方法详解
摘要:Java中嵌入浏览器可通过多种技术实现:1) JCEF框架利用Chromium内核,适合复杂网页;2) JEditorPane组件支持简单HTML显示,但功能有限;3) DJNativeSwing-SWT可内嵌浏览器,需特定内核支持;4) JavaFX WebView结合Swing可完美支持现代网页技术。每种方案各有特点,开发者需根据项目需求选择合适方法,如JCEF适合高性能要求,JEditorPane适合简单展示。(149字)
544 1
|
JavaScript 前端开发 Java
【JCEF】SWT嵌入浏览器(包含VUE的)
【JCEF】SWT嵌入浏览器(包含VUE的)
361 1
|
移动开发 Linux HTML5
Linux下将swf文件用浏览器读取打开(html、html5嵌入swf格式文件)
Linux下将swf文件用浏览器读取打开(html、html5嵌入swf格式文件)
|
Web App开发 JavaScript C#
在WPF中使用CefSharp嵌入浏览器
原文:在WPF中使用CefSharp嵌入浏览器 日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中。下面我们使用CefSharp嵌入浏览器来实现。  首先先介绍一下CefSharp嵌入式浏览器,它是基于Google浏览器的一个组件,我们可以在WPF/WinForm客户端软件中使用它。
2682 0
关于嵌入浏览器开发的一点总结
宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒
1063 0
|
Windows
Qt for Windows嵌入IE浏览器
//嵌入浏览器 WebBrowser= new QAxWidget(this); WebBrowser->setControl(QString::fromUtf8("{8856F961-340...
1707 0
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
296 63
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
338 57
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
213 5
在浏览器执行js脚本的两种方式
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1696 1