zoukankan      html  css  js  c++  java
  • 基于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

     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();
                }
            }

    image.png

    四、运行效果图

    image.png

    五、项目结构图

    image.png

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

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

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

  • 相关阅读:
    一只小小麻雀——基于语法分析工具Gold开发的加减法解释器
    儿子和女儿——解释器和编译器的区别与联系
    商用密码企业调研(必做)
    create dict in python
    sequence in python
    Cpp pointers
    sorted: list sort in python
    the array.length() of C++
    string of Cpp
    srandom and random
  • 原文地址:https://www.cnblogs.com/demodashi/p/10503403.html
Copyright © 2011-2022 走看看