技术:vc++2015
 

概述

用于需要制作一个浏览器 winfrom 中浏览器的插件有很多种 如:WebBrowser , Web.kit等 但用于比较稳定 功能齐全的还是cefsharp

详细

一、前言

使用cefSharp制作浏览器主要是一些页面无法通过自己的接口去控制,又不可能通过第三方去解决的时候,只能通过自己做的浏览器去分析界面,然后给出响应. 例如: xx的网页客服 目前具有各种缺陷无法发送文件 无法提醒客服新消息等

二、环境搭建

进入NuGet 管理程序包

添加 CefSharp.WinForms 和CefSharp.Common 使用v69.0.0版本

设置配置管理器 解决方案为 X86 cefSharp不予许 Any CPU

设置 引用程序.net4.5.2

三、程序实现

初始化cefSharp

 public void init() {

            CefSettings _settings = new CefSettings();
//禁止GPU(图形处理器) 加速
_settings.CefCommandLineArgs.Add("disable-gpu", "1"); // Enable WebRTC 支持媒体流
_settings.CefCommandLineArgs.Add("enable-media-stream", "1"); //不要使用代理服务器,总是直接连接。覆盖传递的任何其他代理服务器标志。
//略微改进了Cef初始化时间,因为它不会尝试解析代理
_settings.CefCommandLineArgs.Add("no-proxy-server", "1");
_settings.Locale = "zh-CN";
//浏览器引擎的语言
_settings.AcceptLanguageList = "zh-CN,zh;q=0.8";
//日志文件
_settings.PersistSessionCookies = true;//保存回话 Cef.Initialize(_settings); webBrowser = new ChromiumWebBrowser("https://www.baidu.com/");
this.panel1.Controls.Add(webBrowser);
webBrowser.Dock = DockStyle.Fill;
}

获取网页html

/// <summary>
/// 获取网页html
/// </summary>
/// <param name="webBrowser"></param>
/// <returns></returns>
public static string gethtml(ChromiumWebBrowser webBrowser) {
string str = "";
if (webBrowser.IsBrowserInitialized)
{
var task = webBrowser.GetSourceAsync();
task.Wait();
str = task.Result;
}
return str; }

分析数据

/// <summary>
/// 对话框中消息的数量
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int getmsgCount(string str) {
return Regex.Matches(str, @"message_content_inner").Count; }
 /// <summary>
/// 获取选择的用户昵称
/// </summary>
/// <returns></returns>
public static string getSelectedNick(string str) {
int selectedindex = str.IndexOf("card_selected");
// loglw.PrintLog("",str);
if (selectedindex > 0)
{
string selects = str.Substring(selectedindex, 500);
int altindex = selects.IndexOf("alt=");
int overindex = selects.IndexOf("\"", altindex + 5);
return selects.Substring(altindex + 5, overindex - altindex - 5);
}
return "";
}

当把界面的信息获取到之后,就和接口获取数据后的操作一样了

设置定时器

  Timer time;
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
this.Shown += Form1_Shown;
this.Activated += Form1_Activated;
this.Deactivate += Form1_Deactivate;
time = new Timer();
time.Interval = 2000;
time.Tick += Time_Tick;
new ToolTip().SetToolTip(file, "客户文件盒");
this.FormClosing += Form1_FormClosing;
}

定时器方法 显示提示信息 提示用户

 private void Time_Tick(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
showmsg();
}
if (!act)
{
showmsg();
}
}

四、运行效果图

五、项目结构图

注意依赖部分太大,没在这里打包进来。

依赖:上述NuGet 管理程序包引用的 cefSharp

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

基于cefsharp的用户浏览器的更多相关文章

  1. 基于CefSharp开发浏览器(八)浏览器收藏夹栏

    一.前言 上一篇文章 基于CefSharp开发(七)浏览器收藏夹菜单 简单实现了部分收藏夹功能 如(添加文件夹.添加收藏.删除.右键菜单部分功能) 后续代码中对MTreeViewItem进行了扩展,增 ...

  2. 基于cookie的用户登录状态管理

    cookie是什么 先来花5分钟看完这篇文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies 看完上文,相信大家对cookie已经有 ...

  3. adblockTester通过js检测用户浏览器是否安装了AdBlock

    adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼 ...

  4. 【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果

    placeholder 是 html5 新增加的属性,主要提供一种提示(hint),用于描述输入域所期待的值.该提示会在输入字段为空时显示,并会在字段获得焦点时消失.placeholder 属性适用于 ...

  5. Breach - HTML5 时代,基于 JS 编写的浏览器

    Breach 是一款属于 HTML5 时代的开源浏览器项目,,完全用 Javascript 编写的.免费.模块化.易于扩展.这个浏览器中的一切都是模块,Web 应用程序在其自己的进程运行.通过选择合适 ...

  6. Socket.IO – 基于 WebSocket 构建跨浏览器的实时应用

     Socket.IO 是一个功能非常强大的框架,能够帮助你构建基于 WebSocket 的跨浏览器的实时应用.支持主流浏览器,多种平台,多种传输模式,还可以集合 Exppress 框架构建各种功能复杂 ...

  7. mac 下基于firebreath 开发多浏览器支持的浏览器插件

    mac 下基于firebreath 开发多浏览器支持的浏览器插件 首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.fir ...

  8. js+jquery检测用户浏览器型号(包括对360浏览器的检测)

    做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果.无论是360安全浏览器,还是 ...

  9. 基于 WebSocket 构建跨浏览器的实时应用

    Socket.IO – 基于 WebSocket 构建跨浏览器的实时应用 Socket.IO 是一个功能非常强大的框架,能够帮助你构建基于 WebSocket 的跨浏览器的实时应用.支持主流浏览器,多 ...

随机推荐

  1. 分享一段奇葩的DBMS_JOB书写经历

    declare JOB_ILEARN_ONLINE number :=1; begin dbms_job.submit(JOB_ILEARN_ONLINE,'clear_product;',sysda ...

  2. ESP8266基础篇

    ESP8266基础篇 模块刚到如图所示~2016-01-26 后三张是手机APP的截图,前面是两个ESP8266的硬件模块,当然大家不应定要买两个,自己焊锡一个USB转TTL的串口就行了,有了下面的底 ...

  3. SpringBoot统一错误处理

    1.处理错误请求页面 import org.springframework.stereotype.Controller; import org.springframework.web.bind.ann ...

  4. JavaEE 之 Mybatis

    1.Mybatis a.定义:MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 b.步骤: ①在src下创建 SqlMapConfig.xml 及 datasource.pr ...

  5. Codeforces 514C Watto and Mechanism 【Trie树】+【DFS】

    <题目链接> 题目大意:输入n个单词构成单词库,然后进行m次查询,每次查询输入一个单词(注意这些单词只由a,b,c构成),问该单词库中是否存在与当前查询的单词有且仅有一个字符不同的单词. ...

  6. Django之认证系统

    Django之认证系统 cookie和session 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞 ...

  7. Python常用模块--re

    Python内部的re--传闻中的正则模块,是无数初学者心中的噩梦,几乎到了谈正则色变的地步. 1.正则是干什么的 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常 ...

  8. 躲不掉的 lambda 表达式

    lambda 表达式是 Java8 的新特性,虽说都发布很久了,但是不到万不得已是肯定不会研究这个的,现在就是那不得不学习的时候了. 本文主要说一下什么 lambda 表达式.Java 中为什么要有 ...

  9. Linux学习笔记8

    其他常用命令 cd+回车=回车~ 进入当前用户主目录 查看指定进程信息 #ps -ef |grep  进程名 #ps  ---查看属于自己的进程 #ps -aux  查看所有用户的执行进程 换成  p ...

  10. 10个非常有趣的Linux命令【转载】

    Linux当中有很多比较有趣的命令,可以动手看看,很简单的. 1.rev命令 一行接一行地颠倒所输入的字符串. 运行: $rev 如输入:shiyanlou shiyanlou rev.jpg 2.a ...