使用cefSharp製做瀏覽器主要是一些頁面沒法經過本身的接口去控制,又不可能經過第三方去解決的時候,只能經過本身作的瀏覽器去分析界面,而後給出響應. 例如: xx的網頁客服 目前具備各類缺陷沒法發送文件 沒法提醒客服新消息等html
進入NuGet 管理程序包c++
添加 CefSharp.WinForms 和CefSharp.Common 使用v69.0.0版本web
設置配置管理器 解決方案爲 X86 cefSharp不予許 Any CPUc#
設置 引用程序.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; }
獲取網頁htmlthis
/// <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; }
分析數據.net
/// <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