基於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大師發表,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM