技術: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
