基于cefsharp的用户浏览器
2024-10-19 07:34:13
技术: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
注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
最新文章
- JavaScript 基础第七天(DOM的开始)
- 【整理】--【GPIO】OK6410
- Smarty单模板多缓存
- android 工程出现感叹号错误
- 用Swift重写公司OC项目(Day1)--程序的AppIcon与LaunchImage如何设置
- iOS之UIview动画
- pc打开手机站提示切换为手机屏幕
- 第一篇Active Directory疑难解答概述(1)
- Linux入门之常用命令(7)压缩
- 笔记:Struts2 国际化
- Java开发笔记(八十八)文件字节I/O流
- json随笔
- Pandas学习笔记(三)
- drf框架使用之 路飞学城(第一天)
- 输入一段字符串,统计其中的数字,字母,空格,其他字符的方法 ----python---
- VCC、VDD和VSS
- python命名规则
- 前后端分离demo 旅馆管理系统
- 里氏代换原则(Liskov Substitution Principle,LSP)
- iOS内存管理和优化 from 刘延军