基于cefsharp的用户浏览器

技术:vc++2015
 

概述

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

详细

一、前言

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

二、环境搭建

进入NuGet 管理程序包image.png

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

image.png

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

image.png

设置 引用程序.net4.5.2

image.png

三、程序实现

初始化cefSharp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <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;
 
        }

分析数据

1
2
3
4
5
6
7
8
9
/// <summary>
        /// 对话框中消息的数量
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static int getmsgCount(string str) {
            return Regex.Matches(str, @"message_content_inner").Count;
 
        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <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 "";
       }

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

设置定时器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
      }

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

1
2
3
4
5
6
7
8
9
10
11
private void Time_Tick(object sender, EventArgs e)
       {
           if (this.WindowState == FormWindowState.Minimized)
           {
               showmsg();
           }
           if (!act)
           {
               showmsg();
           }
       }

image.png

四、运行效果图

image.png

五、项目结构图

image.png

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

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

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

posted on   demo例子集  阅读(3652)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示