相关资料:how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application
一、安装及设置
1、引入
通过NuGet package搜索CefSharp (安装:CefSharp.WinForms)
当前版本:75.1.143,.net框架需要4.5.2或以上
2、建议重启下项目
3、设置any cpu
1)项目-属性-生成-首选32位
2)文件<your-project-name>/<your-project-name>/your-project-name.csproj中,第一个<PropertyGroup>节点内,加入<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>

3)App.config文件<configuration>节点内加入
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="x86"/>
</assemblyBinding>
</runtime>
二、基本使用
public ChromiumWebBrowser chromeBrowser;
public void InitializeChromium()
{
CefSettings settings = new CefSettings();
Cef.Initialize( settings );
chromeBrowser = new ChromiumWebBrowser( "http://www.baidu.com" );
this.Controls.Add( chromeBrowser );
chromeBrowser.Dock = DockStyle.Fill;
chromeBrowser.FrameLoadStart += new EventHandler<FrameLoadStartEventArgs>( FrameStartFunction );//加载开始事件
chromeBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>( FrameEndFunction );//加载完成事件
}
public Form1()
{
InitializeComponent();
InitializeChromium();//初始化浏览器
}
private void UpdateLabel( object str )
{
if ( label1.InvokeRequired )
{
BeginInvoke( new Action<string>( x => { label1.Text = x.ToString(); } ), str );
}
}
private void FrameEndFunction( object sender, FrameLoadEndEventArgs e )
{
Thread thread1 = new Thread( UpdateLabel );//由于事件是CEF的UI线程发出的,需要更新应用UI控件需要异步执行委托
thread1.Start( "加载完成" );
}
private void FrameStartFunction( object sender, FrameLoadStartEventArgs e )
{
Thread thread1 = new Thread( UpdateLabel );
thread1.Start( "加载中..." );
}
private void Form1_FormClosing( object sender, FormClosingEventArgs e )
{
Cef.Shutdown();
}
调用JS
string fun="alert('demo')";
Task<CefSharp.JavascriptResponse> t = chromeBrowser.EvaluateScriptAsync(fun);
t.Wait();
if (t.Result.Success == true)
{
//var res=t.Result.Result;
//t.Result.Result是object类型,如果js返回是一个数组,则是object[];
//todo
}
其他常用备忘
chromeBrowser.Reload();//刷新(会读缓存)
chromeBrowser.Reload(false);//彻底刷新
chromeBrowser.Load("http://www.baidu.com")//加载指定页面
var res =await chromeBrowser.GetSourceAsync();//读取源码