【C#】用CefSharp.ChromiumWebBrowser做winform开发过程中遇到的一些坑

文章目录

  • 使用键盘F5刷新、F12打开控制台
  • 浏览器默认下载弹窗
  • 禁用GPU配置

使用键盘F5刷新、F12打开控制台

public class CEFKeyBoardHander : IKeyboardHandler
{public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey){if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode)){var key = (Keys)windowsKeyCode;switch (key){case Keys.F12:browser.ShowDevTools();break;case Keys.F5:if (modifiers == CefEventFlags.ControlDown){//MessageBox.Show("ctrl+f5");browser.Reload(true); //强制忽略缓存}else{//MessageBox.Show("f5");browser.Reload();}break;}}return false;}public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut){return false;}
}
WebBrowser = new ChromiumWebBrowser();
this.Controls.Add(WebBrowser);
WebBrowser.KeyboardHandler = new CEFKeyBoardHander();

浏览器默认下载弹窗

public class CefDownloadHandler : IDownloadHandler
{public event EventHandler<DownloadItem> OnBeforeDownloadFired;public event EventHandler<DownloadItem> OnDownloadUpdatedFired;public bool CanDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, string url, string requestMethod){//可以支持全部,也可以根据配置去自定义支持的文件类型//return "xls|xlsx".Split('|').ToList().Contains(url.Substring(url.LastIndexOf(".") + 1).ToLower());return true;}public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback){OnBeforeDownloadFired?.Invoke(this, downloadItem);if (!callback.IsDisposed){using (callback){callback.Continue(downloadItem.SuggestedFileName, showDialog: true);}}}public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback){OnDownloadUpdatedFired?.Invoke(this, downloadItem);}
}
WebBrowser = new ChromiumWebBrowser();
WebBrowser.DownloadHandler = new CefDownloadHandler();

禁用GPU配置

var setting = new CefSettings();
setting.CefCommandLineArgs.Add("disable-gpu", "1")

待续未完……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【3D动画】Animcraft 基础运用

骨骼包地址&#xff1a;G:\Animcraft相关资料\motion_2024 入库&#xff1a;FBX文件 Mixamo 下载一个模型。格式&#xff1a;FBX 导入到animcraft软件中。

论文封面表格制作

原文参考&#xff1a;【【论文排版】论文封面完美对齐 强迫症重度患者的经验分享】https://www.bilibili.com/video/BV18f4y1p7hc?vd_source046491acdcff4b39fed20406b36a93e2 视频里up主介绍很详细。我自己也记录一下。 介绍一下如何完成论文封面信息的填写。 创建一个3列…

MATLAB对数据隔位抽取和插值的几种方法

对于串行的数据&#xff0c;有时我们需要转成多路并行的数据进行处理&#xff0c;抽取&#xff1b;或者是需要对数据进行隔点抽取&#xff0c;或对数据进行插值处理。此处以4倍抽取或插值为例&#xff0c;MATLAB代码实现。 文章目录 抽取方法一&#xff1a;downsample函数方法…

vue:如果.vue文件内容过多,我们可以这样拆分

一、标签内容太多&#xff0c;我们可以用组件的方式拆分 二、那如果JS的内容太多呢&#xff1f;因为耦合性太高&#xff0c;拆成组件后父子组件传值不方便&#xff0c;我们可以这样&#xff1a; 子组件: export default {data() {return {};},methods: {a(){alert(1)}} };父组…

算法练习:找出数组大于 n/2 的元素

题目&#xff1a; 给定一个大小为 n 的数组nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 n/2 的元素。你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;…

[足式机器人]Part2 Dr. CAN学习笔记 - Ch02动态系统建模与分析

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - Ch02动态系统建模与分析 1. 课程介绍2. 电路系统建模、基尔霍夫定律3. 流体系统建模4. 拉普拉斯变换&#xff08;Laplace&#xff09;传递函数、微分方程4.1 Laplace Transform 拉式变换4.2 收…

Exception sending a multicast message:Network is unreachable故障

出现这个故障就是没有连接到网络&#xff0c;如果虚拟机没有连接到本机&#xff0c;那么就会出现这个情况&#xff0c;当虚拟机连接到本机就会自动消失&#xff0c;同时如果是用电脑直接安装Ubuntu运行也会出现这个情况&#xff0c;应该是要连接到一个路由器里面这个情况才会消…

Python 借助装饰器,实现父对象使用子对象的方法!

文章目录 1. 引言2. 实践2.1 装饰器说明2.2 定义一个父类2.3 定义子类 3. 整体来看4. 参考 1. 引言 这个需求的背景是这样的&#xff0c;我们在写复杂代码时候&#xff0c;可能会用到 Python 的类继承的方法&#xff0c;即子对象继承父对象的一些属性方法。 在这个过程中&…

游戏后端如何实现服务器之间的负载均衡?

网络游戏已成为人们休闲娱乐的重要方式之一。而在游戏开发中&#xff0c;如何实现服务器之间的负载均衡是一个非常关键的问题。负载均衡不仅可以提高服务器的处理能力&#xff0c;还能保证游戏的稳定性和流畅性。本文将探讨游戏后端如何实现服务器之间的负载均衡。 一、负载均…

Eigen 中的传播计算

Eigen: Reductions, visitors and broadcasting

太实用了!关于ControlNet,这篇你一定要看

一篇文章教会你&#xff0c;从入门到使用。 这里是行者AI&#xff0c;我们专注于人工智能在游戏领域的研究和应用&#xff0c;凭借自研算法&#xff0c;推出游戏AI、智能内容审核、数据平台等产品服务。 controlNet控制生成 anypaint 看到这篇文章的你&#xff0c;一定也是AI绘…

SpringBoot整合人大金仓数据库KingBase

1 去KingBase官网下载驱动jar包 2 将解压得到的所有jar包放置在libs目录下&#xff08;没有就新建一个目录&#xff09; 3 在pom文件添加相关依赖 <!--添加KingBase所需要的依赖--> <dependency><groupId>com.kingbase</groupId><artifactId>kin…

DNS解析原理和k8s DNS 实践

1. 问题背景 1.1 域名解析异常 近期开发的一个功能&#xff0c;需要在k8s集群容器环境中调用公司内部api&#xff0c;api提供了内网域名&#xff0c;解析内网域名异常导致请求超时&#xff0c;因此梳理了下DNS的知识点。 可以先看到下面&#x1f447;这段配置&#xff0c;修…

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发&#xff0c;支持python&#xff0c;go&#xff0c;java接口(C,Rust,c#等语言还在开发中)&#xff0c;支持单机、集群部署&#xff0c;支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…

《每天十分钟》-红宝书第4版-基本引用类型

引用值&#xff08;或者对象&#xff09;是某个特定引用类型的实例。在 ECMAScript 中&#xff0c;引用类型是把数据和功能组织到一起的结构&#xff0c;经常被人错误地称作“类”。虽然从技术上JavaScript 是一门面向对象语言&#xff0c;但ECMAScript 缺少传统的面向对象编程…

Disruptor相关问题及答案(2024)

1、Disruptor 是什么&#xff0c;它解决了什么问题&#xff1f; Disruptor是一个高性能的内存中数据交换框架&#xff0c;由LMAX(伦敦多资产交易所)开发&#xff0c;目的是用于支持交易系统中极高的并发处理。它可以说是一个用于线程间消息传递的工具&#xff0c;但与传统的队…

第32次CCF计算机软件能力认证-第一题

仓库规划 问题描述 西西艾弗岛上共有 n个仓库&#xff0c;依次编号为 1…n。每个仓库均有一个m维向量的位置编码&#xff0c;用来表示仓库间的物流运转关系。 具体来说&#xff0c;每个仓库 i均可能有一个上级仓库 j&#xff0c;满足&#xff1a;仓库 j 位置编码的每一维均大…

【XR806开发板试用】XR806无线OTA功能实验

前言 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806不仅硬件功能多&#xff0c;XR806也提供了功能极其丰富的SDK&#xff0c;几天体验下来非常容易上手。常见的功能几乎都有相应的cmd或demo实现&#xff0c;HAL也做得非…

Apache ActiveMQ RCE漏洞复现

Apache ActiveMQ RCE漏洞复现&#xff08;CNVD-2023-69477&#xff09; 1、漏洞版本 Apache ActiveMQ < 5.18.3 Apache ActiveMQ < 5.17.6 Apache ActiveMQ < 5.16.7 Apache ActiveMQ < 5.15.16 2、POC 通过dnslog验证的poc.xml <?xml version"1.…

面对24考研不尽如人意的预期,如何有效应对与规划未来?

文章目录 1. 自我反思与总结&#x1f90f;2. 保持学习与积累✌3. 多元发展与备选方案&#x1f91e;4. 心理调适与激励&#x1f44f; 当你点开这篇文章的时候&#xff0c;或许你正在经历着2024年研究生入学考试之后的心潮起伏。成绩未定&#xff0c;而内心却已有所预感&#xff…