[Winfrom]Cefsharp配置与初始化
摘要
在做客户端程序的时候,本来打算使用wpf的,但在内嵌cefsharp的时候,发现输入法有问题,所以使用了winform作为cefsharp的容器。
系列文章
[Winfrom]Cefsharp配置与初始化
初始化与配置
/// <summary>
/// 浏览器配置
/// </summary>
private CefSharp.CefSettings _settings;
/// <summary>
/// 浏览器对象
/// </summary>
CefSharp.WinForms.ChromiumWebBrowser _webView;
/// <summary>
/// 加载页面
/// </summary>
/// <param name="url"></param>
private void LoadPage(string pageName)
{
string url = string.Format(StaticParameter.htmlPathFormat, StaticParameter.ExeDir, pageName);
try
{
if (_webView == null)
{
_settings = new CefSharp.CefSettings();
_settings.UserAgent = StaticParameter.UserAgent;
// Enable WebRTC
_settings.CefCommandLineArgs.Add("enable-media-stream", "");
//Disable GPU Acceleration
_settings.CefCommandLineArgs.Add("disable-gpu", ""); // Don't use a proxy server, always make direct connections. Overrides any other proxy server flags that are passed.
// Slightly improves Cef initialize time as it won't attempt to resolve a proxy
_settings.CefCommandLineArgs.Add("no-proxy-server", "");
_settings.Locale = "zh-CN";
//缓存路径
_settings.CachePath = StaticParameter.ExeDir + "/BrowserCache";
//浏览器引擎的语言
_settings.AcceptLanguageList = "zh-CN,zh;q=0.8";
_settings.LocalesDirPath = StaticParameter.ExeDir + "/localeDir";
//日志文件
_settings.LogFile = StaticParameter.ExeDir + "/LogData";
_settings.PersistSessionCookies = true;
_settings.UserDataPath = StaticParameter.ExeDir + "/userData"; CefSharp.Cef.Initialize(_settings);
_webView = new CefSharp.WinForms.ChromiumWebBrowser(url)
{
BrowserSettings =
{
DefaultEncoding = "UTF-8"
},
MenuHandler = new MenuHandler(),
LifeSpanHandler = new OpenPageSelf(),
Dock = DockStyle.Fill
};
ScriptCallbackManager scriptManager = new ScriptCallbackManager();
scriptManager.MiniWinidowHandler += scriptManager_MiniWinidowHandler;
_webView.LoadError += _webView_LoadError;
_webView.RegisterJsObject("googleBrower", scriptManager,
new CefSharp.BindingOptions { CamelCaseJavascriptNames = false });
this.Controls.Add(_webView);
}
else
{
_webView.Load(url);
}
}
catch (Exception ex)
{
LogInfoData.WriteLog(new LogInfo
{
IsSend = false,
Message = ex.Message,
Op = "loadpage_err"
});
}
}
禁用右键菜单
/// <summary>
/// 禁用右键菜单
/// </summary>
internal class MenuHandler : IContextMenuHandler
{ public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser,
IFrame frame, IContextMenuParams parameters, IMenuModel model)
{
model.Clear();
} public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame,
IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
return false;
} public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{ } public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser,
IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
{
return false;
}
}
加载页面失败
void _webView_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
MessageBox.Show("加载页面失败,请退出客户端进行重试");
Quit();
}
关闭cefsharp
CefSharp.Cef.Shutdown();
if (_webView != null)
{
_webView.Dispose();
}
刷新页面
//刷新
_webView.GetBrowser().Reload();
总结
安装cefsharp可以使用nuget进行安装。
[Winfrom]Cefsharp配置与初始化的更多相关文章
- 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean
让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
- 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位
对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢. 一.关于POR(Power-On ...
- 在过滤器中获取在web.xml配置的初始化参数
在过滤器中获取在web.xml配置的初始化参数 例如 <filter> <filter-name>cross-origin</filter-name> < ...
- mybatis源码分析--如何加载配置及初始化
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...
- nginx&http 第二章 ngx 事件event配置等初始化
event事件模块,配置分为两层:ngx_events_module 事件模块 和 ngx_event_core_module 事件核心模块.ngx_events_module:模块类型NGX_COR ...
- saltstack之(七)配置管理系统初始化init
saltstack的配置管理分环境管理:①.base为基础环境,一般会存放一些所有服务器都使用的配置管理信息.②.dev为开发测试环境,一般会存放一些开发测试服务器使用的配置管理信息.③.pro为线上 ...
- CodeWarrior 10 配置Jlint初始化文件
新建一个项目之后,飞思卡尔的仿真器的配置不如德州仪器那么简单.他需要一些配置. 当我们新建一个工程后,可以采取如下步骤配置Jlint: 1.右击工程名,选择属性. 2.在Run/Debug Setti ...
- STM32之RTC配置与初始化
void rtc_init() { //让电源和后备寄存器使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE) ...
- FFmpeg(14)-使用NDK、C++完成EGL,display, surface, context的配置和初始化
EGL 用它开发需要做哪些事情. DIsplay 与原生窗口建立链接.EGL在Android中可以用java调,也可以用C++调. EGLDisplay eglGetDisplay ...
随机推荐
- perl6 中将 字符串 转成十六进制
say Blob.new('abcde'.encode('utf8')).unpack("H*"); say '0x'~'abcde'.encode('utf8').unpack( ...
- Android 中关于 【Cursor】 类的介绍
转自(http://www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html) 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生 ...
- 高通Trustzone and QSEE介绍
http://blog.csdn.net/iamliuyanlei/article/details/52625968
- c# 获取百度最后的url
using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.T ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- java虚拟机规范(se8)——java虚拟机结构(二)
2.5 运行时数据区域 java虚拟机定义了多个用于程序执行期间的运行时数据区域.这些数据区域中一些随着java虚拟机的启动而创建,随着虚拟机的退出而销毁.其他的数据区域时和线程相关的.线程相关数据区 ...
- Babel(抽象语法树,又称AST)
文章:https://juejin.im/post/5a9315e46fb9a0633a711f25 https://github.com/jamiebuilds/babel-handbook/blo ...
- LeetCode(23):合并K个排序链表
Hard! 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2-> ...
- IOC入门
Spring六大模块 1.SpringCore spring的核心功能:IOC容器,解决对象的创建及依赖关系 2.SpringWeb spring对Web模块的支持 3.SpringDAO s ...
- Java编程的逻辑 (72) - 显式条件
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...