1.安装CefSharp

2.GetMac()获取用户mac地址方法

3.根据错误提示新建CEFKeyBoardHander.cs

form1.cs

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.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WindowsFormsApp
{
public partial class Form1 : Form
{
private ChromiumWebBrowser browser; private string mac { get; set; } public Form1()
{
GetMac();
InitializeComponent();
InitBrowser();
} public void GetMac() {
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics = mc.GetInstances();
foreach (ManagementObject nic in nics)
{
if (Convert.ToBoolean(nic["ipEnabled"]) == true)
{
mac = nic["MacAddress"].ToString();//Mac地址
//string ip = (nic["IPAddress"] as String[])[0];//IP地址
//string ipsubnet = (nic["IPSubnet"] as String[])[0];//子网掩码
//string ipgateway = (nic["DefaultIPGateway"] as String[])[0];//默认网关
}
}
} public void InitBrowser()
{
//设置语言环境 以上这段代码一定要在new ChromiumWebBrowser之前调用
var setting = new CefSettings(); setting.CefCommandLineArgs.Add("--disable-web-security", "1");//关闭同源策略,允许跨域 setting.Locale = "zh-CN";
//缓存路径
setting.CachePath = System.AppDomain.CurrentDomain.BaseDirectory + "BrowserCache";
//浏览器引擎的语言
setting.AcceptLanguageList = "zh-CN,zh;q=0.8";
setting.LocalesDirPath = System.AppDomain.CurrentDomain.BaseDirectory + "LocaleDir";
//日志文件
setting.LogFile = System.AppDomain.CurrentDomain.BaseDirectory + "LogData"; setting.CefCommandLineArgs.Add("mute-audio", "true"); setting.PersistSessionCookies = true; setting.UserDataPath = System.AppDomain.CurrentDomain.BaseDirectory + "UserData";
Cef.Initialize(setting); // string url = AppDomain.CurrentDomain.BaseDirectory + @"../../html/index.html";
// url = url.Replace("\\", "/").Replace(" ", "%20"); mac = mac.Replace(":", "-"); string url = @"http://111.111.111.111:9000/111.php/index/login/mac/"+mac; // Cef.Initialize(new CefSettings());
browser = new ChromiumWebBrowser(url);
Font font = new Font("微软雅黑", 10.5f); browser.Font = font;
browser.Dock = DockStyle.Fill; browser.KeyboardHandler = new CEFKeyBoardHander(); browser.LoadingStateChanged += new EventHandler<LoadingStateChangedEventArgs>(LoadingStateChangeds);
// 加载完成后 , 执行操作
browser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(FrameEndFunc); // 加载完成后 , 执行操作
browser.FrameLoadStart += new EventHandler<FrameLoadStartEventArgs>(FrameLoadStart); this.Controls.Add(browser);
} private void LoadingStateChangeds(object sender, LoadingStateChangedEventArgs e)
{
// throw new NotImplementedException();
} private void FrameLoadStart(object sender, FrameLoadStartEventArgs e)
{
//throw new NotImplementedException();
} private void FrameEndFunc(object sender, FrameLoadEndEventArgs e)
{
// throw new NotImplementedException();
} }
}

CEFKeyBoardHander.cs

using CefSharp;

namespace WindowsFormsApp
{
internal class CEFKeyBoardHander : IKeyboardHandler
{
public bool OnKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
{
//throw new System.NotImplementedException();
return false;
} public bool OnPreKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
{
return false;
}
}
}

---------------------------

WinForm嵌入Web网站的更多相关文章

  1. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

  2. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  3. VS2010新建Web网站与新建Web应用程序的区别 (转)

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  4. Web应用程序与Web网站及部署在IIS中

    在Visual Studio可以创建 Web 应用程序项目或网站项目.通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单. 通过选择 新建网 ...

  5. C#Web网站的创建

    一.CS与BS的区别 CS软件:需要在客户端安装软件. BS软件:只需要浏览器就能运行,Web网站就是BS软件. 创建过程: 1.文件新建---新建网站----空白网站 2.右击网站项目---添加网页 ...

  6. Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转

    前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...

  7. qt添加cef库嵌入web [转]

    qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...

  8. Web网站的几个并发量级

    评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈谈几个Web网站的数 ...

  9. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  10. zabbix 监控web网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

随机推荐

  1. Anaconda jupyter notebook 出现 kernel error 解决办法

    kenel出现错误如图: 解决办法 首先打开Anaconda Prompt输入jupyter kernelspec list查看安装的内核和位置进入安装目录,打开kernel.jason, 查看pyt ...

  2. N63050 第一周运维作业

    1.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面debian: ...

  3. 如何优雅地写LCD接口的使用

    通过面向对象方法进行实现,可以多学习 参考链接: http://www.wujique.com/2021/05/16/lcd%e9%a9%b1%e5%8a%a8%e5%ba%94%e8%af%a5%e ...

  4. vue移动端禁止弹层穿透、点击元素滚动到视图中心杂文日志

    一,需求是在无限列card加载页面,点击任何一个card的显示图表按钮,图表自适应居中显示,显示遮罩层,页面可以滑动,但不能穿透点击 一个无限列表加载页面设置遮罩层一般需求是页面不能滑动的,但这比较特 ...

  5. FMC DA子卡设计原理图:FMCJ465-2路 16bit 12.6GSPS FMC DA子卡

    FMCJ465-2路 16bit 12.6GSPS FMC DA子卡 一.板卡概述:      FMCJ465是一款转换速率最高为12.6GSPS 的 DAC 回放板,DAC位数16bit; 板卡基于 ...

  6. vue.config.js --- vue-cli 4.0配置

    // 所有配置请参考 https://cli.vuejs.org/zh/config/ module.exports = { /** * publicPath * hash 模式下可使用 * publ ...

  7. mysql拼接多条字段

    转 未合并情况 SELECTa.id,b.name AS "role"FROM sys_user aINNER JOIN sys_user_role c ON a.id=c.use ...

  8. vue.js----之前端路由(二)

    上一篇我们已经把vue框架搭好了,接下来我们进行路由模块 在src目录下新建router.js 添加如下代码 1 /** 2 * Created by sioxa on 2016/10/29 0029 ...

  9. 常见报错——Uncaught TypeError: document.getElementsByClassName(...).addEventListener is not a function

    这是因为选择器没有正确选择元素对象 document.getElementsByClassName(...)捕捉到的是该类名元素的数组 正确的访问方式应该是: document.getElements ...

  10. 4、Normal Equation 的向量投影解法与几何和直觉解释

    参考:https://zhuanlan.zhihu.com/p/269232332 在线性回归的正交方程 ( Normal Equation )推导一文中提到使用 向量投影 的方法一步就能推导出 正交 ...