C# WINFORM嵌入CHROME浏览器(CEFSHARP)

2023-11-12

在开发过程中经常需要在程序中嵌入浏览器控件用于访问网页,Visual Studio中自带了一个webbrowser控件,但无奈这个控件是调用用户电脑上的IE浏览器来实现的,如果用户装的是低版本IE(比如Win7的IE8)很多新的网页标准就无法得到支持,这时使用CefSharp来替代webbrowser控件是一个不错的选择。

这里用Visual Studio 2015演示CefSharp的使用。

首先请确保程序的目标框架至少是.NET Framework 4.5.2,不是的话请双击“解决方案资源管理器”里的Properties更改目标框架。

设置.net版本

点击项目菜单下的“管理NuGet程序包”。

管理NuGet程序包

在浏览选项卡下的搜索框里搜索“cefsharp”,安装搜索结果里的CefSharp.WinForms。

搜索cefsharp

然后再安装CefSharp.Common,一般在安装这项的时候还会自动安装上cef.redist.x86和cef.redist.x64。

安装CefSharp.Common

安装CefSharp.Common

安装完成后“已安装”选项卡下应该有以下这4个内容。

安装完成后的内容

把下面的代码复制进Form1.cs,这时VS可能会有报错,关闭VS再重新启动一下就能解决问题。

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 CefSharp;
using CefSharp.WinForms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string url = “https://www.baidu.com”;
ChromiumWebBrowser webview = new ChromiumWebBrowser(url);
webview.Dock = DockStyle.Fill;
this.Controls.Add(webview);
}
}
}

可能会出现的报错:代码是弃用的。
完整代码无报错
完整代码,重启后无报错
上面的步骤都做完后试着按F5运行一下,发现有报错,大概意思是不能以AnyCPU的模式运行。

运行时报错

这里需要点击“生成”菜单下的“配置管理器”,把活动解决方案平台改成x86。

设置配置管理器

设置配置管理器

改完上面的之后Properties里的目标平台也会自动改成x86。

更改目标平台

再次运行即可成功显示出网页。

成功显示

测试一下浏览器内核,是Chrome79,现在终于可以摆脱那难用的IE内核了。

测试浏览器内核

由原文 https://www.eskysky.com/1645.html 转载

目的:摆脱IE内核

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# WINFORM嵌入CHROME浏览器(CEFSHARP) 的相关文章

  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项

随机推荐

  • 小程序 margin-right无效,文字溢出?

    先来看下盒子模型 box sizing样式 告诉浏览器去理解你设置的边框和内边距的值是包含在width内 设置了 box sizing border box 盒子的宽度 border padding width 盒子的高度 border p
  • unix Mechanism vs Policy(机制与策略)

    http blog csdn net ostrichmyself article details 5333558 http blog csdn net liuhaobupt article details 5350950 http linu
  • TFT电路原理

    TFT Thin Film Transistor 薄膜晶体管 在TFT LCD中 TFT的功能就是一个开关管 常用的TFT是三端器件 利用施加于栅极的电压来控制源 漏电极间的电流 对于显示屏来说 每个像素从结构上可以看作为像素电极和共同电极
  • 做了一个XSS的闯关游戏,攻略贴上来

    游戏地址 http xss quiz int21h jp 第一关 比较简单 直接输入 http xss quiz int21h jp sid 2a75ff06e0147586b7ceb0fe68ee443b86a6e7b9 第二关 也相对简
  • 三极管工作原理分析,精辟、透彻,看后你就懂

    随着科学技的发展 电子技术的应用几乎渗透到了人们生产生活的方方面面 晶体三极管作为电子技术中一个最为基本的常用器件 其原理对于学习电子技术的人自然应该是一个重点 三极管原理的关键是要说明以下三点 1 集电结为何会发生反偏导通并产生Ic 这看
  • Topic 6 SCI 文章之计数变量泊松回归

    这期继续说说统计这些事 泊松分布大家可能熟悉些 但是用它来做模型还是需要细细品味一下 泊松回归 也被称为对数线性模型 当结果变量是一个计数 即数值型 但不像连续变量的范围那么大 时 使用泊松回归 研究中统计变量的例子包括一个人有多少次心脏病
  • 程序员写100万行代码是什么感觉

    今天在社群上闲逛 突然发现一个十分有趣的帖子 写了100W行的代码是啥感觉 看完之后就头皮一阵发麻 让我写一万行的代码 are you kidding me 黑人问号脸 我估计写到20万的时候就会突然有个疑问 咦 我的头发呢 A同学 我写两
  • 期货开户市场是一面镜子

    期货市场是一面镜子 照出真实的你 成功者 总需要用失败者来定义 市场中1 的更新和迭代 使进入合理的市场循环状态 有人说期货市场是优秀人才的坟墓 究其根本原因 即使是其他领域的小有成就的精英 在期货市场中也很难完成超越 市场折射出人性的贪婪
  • 如何在matlab中打开一个.dat文件,并载入数据

    方法一 fscanf函数 fid fopen data dat r 打开数据文件 x fscanf fid g 读取文件数据 得到的x数据为列向量 要注意的是 data dat必须是在你操作的目录下 方法二 load函数 load xxx
  • RocketMQ知识

    1 为什么使用MQ MQ在项目中的作用 MQ具有解耦 异步 削峰填谷的功能 在本人项目中主要用于单向报文 交易信息登记的异步操作 2 RocketMQ由哪些角色组成 它们分别由什么作用 NameServer 作为服务协调组件 类似于zook
  • 做项目时候活动详情页面遇到的思考总结1。

    首先这个整体在活动详情这个页面显示 这个页面是这个项目得亮点也是难点 先是pageleft拖拽组件 获得组件数据component改变拖拽状态dragactive 然后在预览页面pagereview中添加到预览位置 先获得拖动鼠标距离预览区
  • 诚之和:怎么在Django中Pyecharts生成图表

    在数据可视化中 我们可以使用一些类似pyecharts来生成图表 但如果我们想在网页中进行数据可视化 还需要Django的支持 那么怎么在Django中Pyecharts生成图表呢 接下来的这篇文章带你了解 因为pyecharts是支持py
  • Flask(数据库操作 十一)

    查询 查询全部 users User query all 查询第一个 users User query first 通过主键获取 users User query get 1 多个主键 users User query get 1 5 us
  • windows下安装虚拟机+ Ubuntu的详细过程

    不是每一个程序员都必须玩过linux 只是博主觉得现在的很多服务器都是linux系统的 而自己属于那种前端也搞 后台也搞 对框架搭建也感兴趣 但是很多生产上的框架和工具都是安装在服务器上的 而且有不少大公司都要求熟悉在linux上开发 因此
  • Spring学习--DI依赖注入

    依赖与依赖注入 传统应用程序设计中所说的依赖一般指 类之间的关系 那先让我们复习一下类之间的关系 泛化 表示类与类之间的继承关系 接口与接口之间的继承关系 实现 表示类对接口的实现 依赖 当类与类之间有使用关系时就属于依赖关系 不同于关联关
  • osgEarth的Rex引擎原理分析(一二七)rex影像层属性及其设置

    目标 一二六 中问题213
  • C语言之进制转换

    文章目录 一 基础知识 1 C语言中的进制 2 汇编中的进制 3 常见进制的基数 4 不同进制的输出方式 二 十进制转为其它进制 三 任意进制转为十进制 四 二进制与十六进制的互相转换 1 二进制转为十六进制 2 十六进制转为二进制 五 二
  • SaltStack Installation(一)

    author skate time 2014 11 11 SaltStack Installation Installation from EREL 1 If EPEL is not enabled on your system you c
  • MFC窗体中打开第三方exe程序到指定区域

    流程如下 1 CreateProcess创建外部EXE进程 2 获取指定区域的坐标 3 查找进程的主窗口 4 将外部程序移到指定区域 5 调用ShowWindow显示窗口 主程序如下 handle StartProcess D progra
  • C# WINFORM嵌入CHROME浏览器(CEFSHARP)

    在开发过程中经常需要在程序中嵌入浏览器控件用于访问网页 Visual Studio中自带了一个webbrowser控件 但无奈这个控件是调用用户电脑上的IE浏览器来实现的 如果用户装的是低版本IE 比如Win7的IE8 很多新的网页标准就无