Skip to content

lanybass/CefWinFormDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

要使用此库的exe项目先用nuget安装CefSharp.WinForms 和 CefSharp.Common 两个包:
Install-Package CefSharp.WinForms -Version 49.0.1
Install-Package CefSharp.Common -Version 49.0.1

注意,版本49.0.1为支持XP的最后一个版本,且.net环境为4.0,而较新的版本至少需要4.5.2的环境
本demo默认使用49版本的API,且已测试过版本49和71在切换两句代码后均可使用。使用71时在BrowserManager中有差异的代码已标记出,注释掉标记为 //老版本 的行,启用标记为 //新版本 的行即可,其他无差异

=============================

app.manifest 需要放在exe的同目录

====================

解决方案的“配置属性”和exe项目的生成属性,均需要设置为x86

====================

exe的main函数里,添加退出事件来关闭浏览器:

Application.ApplicationExit += Application_ApplicationExit;

private static void Application_ApplicationExit(object sender, EventArgs e)
{
//程序退出时记得调用shutdown
Cef.Shutdown();
}

====================================
BrowserManager.Instance.Browser就是浏览器控件,这样添加浏览器到一个pannel里面:

BrowserManager.Instance.Browser.Dock = DockStyle.Fill;
BrowserManager.Instance.Browser.Load("https://www.baidu.com/");//浏览器加载的网址
panel1.Controls.Add(BrowserManager.Instance.Browser);

==================================== .net和js交互

在c#代码中通知web页面执行js代码:
BrowserManager.Instance.Browser.ExecuteScriptAsync("var a=1;b=2;alert(a+b);console.log(document.location.href);document.getElementById('myBtn');");

在web页面调用c#代码:
InteractiveManager类已经被注册到了web的js环境中,赋值给了变量im

在web环境直接调用 im.xxx即可调用到InteractiveManager类对应的函数(注意,js中调用时函数名首字母变小写)如:

<script> $("#myBtn").click(function(){ im.vehicleForm();}); </script>

由于这都是异步调用,要取返回结果的话,需要传入一个回调函数到.then中,如:

<script> $("#myBtn").click(function(){ im.getHphm().then(function(ret){ alert(ret); }); //这里的ret就是getHphm的返回值 }); </script>

注意:im对象是在页面加载完成后才注入的,如果你在页面刚加载完就直接调用im可能这时im还未被赋值,则需要这样调用:

<script> (async () =>{ await CefSharp.BindObjectAsync('im');//等待im注册完成 //上面句完了之后这里调用就有im了 im.vehicleForm(); })(); </script>

在InteractiveManager中添加的public的属性和函数都可以在js中被调用,但字段不可以。

About

CefSharp demo. 做了简单说明。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages