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

C# 窗体应用程序嵌套web网页(基于谷歌浏览器内核)

有一个winform项目,需要借助一个web项目来显示,并且对web做一些操作,web页目是需要用谷歌内核,基于谷歌 Chromium项目的开源Web Browser控件来开发写了一个demo。

安装步骤


第一步:右键项目,点击 管理NuGet程序包 , 输入Cefsharp 关键字搜索, 选择 CefSharp.WinForms 进行安装

6c2ef1f2c255415fa4130793732c533c.png

安装完后,以packages.config中可以看到如下信息

bbd693dd4cdc42a6a2b3bdaf64725570.png

 

第二步:修改配置管理器,将平台修改为X86或X64,Cef有32和64位之分1cdab1e5faca4eee87a60b3f614fec5e.png

在 活动方案解决平台 下拉,点击新建

c3fdde1a321747cd87f8c39f136bb867.png

 选择 X86 ,点击确定,接着关闭即可

d1ddbf3c29634f1988f4fa86529f618e.png

第三步:编写代码,初始化浏览器
 

using CefSharp.WinForms;
using CefSharp;
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;namespace WebApp
{public partial class Form1 : Form{private ChromiumWebBrowser browser;public Form1(){InitializeComponent();//窗口最大化this.WindowState = FormWindowState.Maximized;//窗口全屏//this.FormBorderStyle = FormBorderStyle.None;}private void Form1_Load(object sender, EventArgs e){// 初始化浏览器InitializeChromium();}private void InitializeChromium(){string website = "http://www.baidu.com";CefSettings settings = new CefSettings();settings.IgnoreCertificateErrors = true;Cef.Initialize(settings);//创建实例browser = new ChromiumWebBrowser(website);this.Controls.Add(browser);}}
}

最终启动程序,成功访问百度9b6dda0b0940413da2ccd9cf8e8d8ebf.png

 

常见疑问

右键菜单如何禁用?

建立MenuHandler类,继承cef中的IContextMenuHandler,并且实现他的接口

public class MenuHandler : IContextMenuHandler{void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model){model.Clear();}bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags){//throw new NotImplementedException();return false;}void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame){//throw new NotImplementedException();}bool CefSharp.IContextMenuHandler.RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback){return false;}}

设置ChromiumWebBrowser的 MenuHandler属性即可
browser.MenuHandler = new MenuHandler();  //禁用右键菜单

 

如何添加页面加载完成回调事件?

 

设置ChromiumWebBrowser的 FrameLoadEnd 属性
 

        private void InitializeChromium(){string website = "http://www.baidu.com";CefSettings settings = new CefSettings();settings.IgnoreCertificateErrors = true;Cef.Initialize(settings);//创建实例browser = new ChromiumWebBrowser(website);//禁用右键菜单//browser.MenuHandler = new MenuHandler();//页面加载完成事件browser.FrameLoadEnd += webview_FrameLoadEnd;this.Controls.Add(browser);}private void webview_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){}

 

浏览器中的 js如何回调到 winform窗体中?

 

初始化chromeBrowser对象时,需要事先注册好回调方法

browser.RegisterJsObject("boundAsync", new BoundObject());

事先建立一个类,专门用来放需要回调的方法

    public class BoundObject{// 这里定义从JavaScript调用的方法  public void OnKeyDown(){Application.Exit();}public void opencmd(){MessageBox.Show("JS回调");}}

 结尾:样例小程序二维码,自己做的一个免费好用的排班小程序

4a5c805b5abc45bfbb032ad436cae942.png

 


http://www.mrgr.cn/news/81728.html

相关文章:

  • Spring事务回滚
  • 【杂记】VS Code 设置 Python 文件模板
  • jangow-01-1.0.1靶机
  • 项目经验——RRU芯片
  • 阿尔萨斯(JVisualVM)JVM监控工具
  • 实时数仓Hologres
  • 获取页面上所有的img,并保存到本地
  • 3.微服务灰度发布落地实践(组件灰度增强)
  • CY系统环境部署说明
  • 工作流审批流程的一些概念
  • 广义线性模型(GLM)全面解析
  • Ribbon、Nacos
  • 「matplotlib」绘制图线和数据点的样式风格和颜色表大全
  • 适配器模式概述
  • Linux应用软件编程-多任务处理(线程)
  • 119.【C语言】数据结构之快速排序(调用库函数)
  • 工厂+策略模式之最佳实践(疾病报卡维护模块API设计)
  • Java编程规约
  • C++线程、并发、并行
  • 【Leetcode 热题 100】46. 全排列
  • 雷电模拟器安装LSPosed
  • 强化学习基础之贝尔曼期望方程
  • -0.4375 IEEE754表示
  • Python+Django 技术实现自动化漏洞扫描系统开发
  • 【Rust自学】7.2. 路径(Path)Pt.1:相对路径、绝对路径与pub关键字
  • Python数据可视化小项目