CefSharp是什么

  1. A framework for embedding web-browsing-like capabilities to a standard .NET application (WPF or Windows Forms).
  2. A set of high-level custom controls to make it reasonably easy to integrate these capabilities in your application.
  3. Built on top of CEF, the Chromium Embedded Framework by Marshall A. Greenblatt.
  4. CefSharp does little more than package CEF in a nice convenient .Net Wrapper.
  5. 以上是原文,其实就是一个浏览器核心,类似WebKit东西,然后可以嵌入程序中,方便咱们开发使用了

为什么用CefSharp

  1. CefSharp加载完成后,获取的是加载完成后的网页源代码,相当于google浏览器F12看到的源代码哦
  2. 这样,就不用分析对方浏览器如何加密的,获取到的数据,直接就是用户看到的最终数据

如何安装

  1. .net程序 右键---管理Nuget应用程序包--搜索CefSharp---安装
  2. 程序最低依赖是.net4.5.2
  3. 必须使用x86或者x64编译环境

初始化并使用

static ChromiumWebBrowser browser;

var settines = new CefSettings()
{
Locale = "zh-CN",
AcceptLanguageList = "zh-CN",
MultiThreadedMessageLoop = true
}; Cef.Initialize(settines);
browser = new ChromiumWebBrowser("www.baidu.com");//指定初始化地址
this.panel1.Controls.Add(browser);
browser.Dock = DockStyle.Fill; //加载开始事件
browser.FrameLoadStart += Browser_FrameLoadStart; //加载完成后事件
browser.FrameLoadEnd += Web_FrameLoadEnd;

跳转到指定地址

  browser.Load("www.qq.com");

加载完成事件

private async void Web_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//一个网页会调用多次,需要手动自己处理逻辑
var url = e.Url;
var result = await browser.GetSourceAsync();
var html = result;
}

调用JS

browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");

 browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");

//你可以做你任何想做的事了

全部源代码

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
static ChromiumWebBrowser browser;
public Form1()
{
InitializeComponent();
DataInit();
} /// <summary>
/// 初始化
/// </summary>
public void DataInit()
{
var settines = new CefSettings()
{
Locale = "zh-CN",
AcceptLanguageList = "zh-CN",
MultiThreadedMessageLoop = true
}; Cef.Initialize(settines);
browser = new ChromiumWebBrowser("www.baidu.com");//指定初始化地址
this.panel1.Controls.Add(browser);
browser.Dock = DockStyle.Fill; //加载开始事件
browser.FrameLoadStart += Browser_FrameLoadStart; //加载完成后事件
browser.FrameLoadEnd += Web_FrameLoadEnd;
} private void Browser_FrameLoadStart(object sender, FrameLoadStartEventArgs e)
{
var url = e.Url;
} private void button1_Click(object sender, EventArgs e)
{
browser.Load(txt_Url.Text);
} private async void Web_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//一个网页会调用多次,需要手动自己处理逻辑
var url = e.Url;
var result = await browser.GetSourceAsync();
var html = result; ////调用js
//browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");
////txtAccount
//browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");
}
}
}

最新文章

  1. 2013 duilib入门简明教程 -- 响应按钮事件(4)
  2. elasticsearch curl operation
  3. UITableView使用
  4. 深入理解css系列:清除浮动
  5. apache 访问出现403 Forbidden
  6. Java集合中List的用法
  7. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
  8. Revit中如何添加水平仰视平面视图
  9. javascript 浏览器执行断点
  10. IntelliJ IDEA 14 注册码及注册码生成器
  11. XFdtd 7.3.2发布增强生物电磁学中的核磁共振功能
  12. Java堆栈(转)
  13. 约瑟夫问题的java实现
  14. node &amp; grunt path处理相关
  15. 【翻译】Ext JS最新技巧——2015-10-21
  16. error.go源码笔记
  17. react引入方式
  18. Ajax的注意事项
  19. JVM——Java虚拟机架构
  20. 海港(NOIP2016)

热门文章

  1. LinuxShell脚本基础 6-case...esac的使用和通配符
  2. 使用jquery处理数据时要注意的问题
  3. 带双反斜杠的Json数据至单反斜杠的Json数据处理
  4. FZU 2138——久违的月赛之一——————【贪心】
  5. WCF 服务管理
  6. php 命名空间与文件引入
  7. 使用在线工具下载YouTube视频
  8. 一:Redis安装
  9. Java 基础(6)——关键字 &amp; 标识符 &amp; 转义字符
  10. 解锁Spring框架姿势1