栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

【备忘】CefSharp使用

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【备忘】CefSharp使用

  1. 创建.net framework form类型的项目
  1. 虽然网络说wpf类型项目是未来,form将淘汰,但是我不喜欢用xml生成界面,可视化设计+程序生成更加容易使用
  2. 使用.NET framework(不要使用.NET core,不然在Register JS时提示BrowserSubprocess错误),据说可以跨多个平台,暂时没有验证

 

 

  1. 添加CefWinForms

使用NuGet工具安装CefSharp.WinForms,它依赖CefSharp.Common,CefSharp.Common又依赖两个cef.redist,libcef.dll都在两个cef.redist中

 

  1. 修改工程文件
  1. 将以下内容添加到.csproj文件尾部,否则,怎么都编译不过

  true

  true

  true

 

  

  $(CefSharpBrowserProcessCore64)

  true

  

  

  $(CefSharpBrowserProcessCore32)

  true

  

 

  1. 修改编译配置

在删除AnyCPU,添加x64x86;

或者使用AnyCPU,在.csproj工程文件的第一个中增加一行

true

 

  1. 修改程序
  1. Programe.cs中Main改成如下形式

public static int Main(string[] args)

{

Application.SetHighDpiMode(HighDpiMode.SystemAware);

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

 

//For Windows 7 and above, best to include relevant app.manifest entries as well

Cef.EnableHighDPISupport();

 

#if NETCOREAPP

//We are using our current exe as the BrowserSubProcess

//Multiple instances will be spawned to handle all the

//Chromium proceses, render, gpu, network, plugin, etc.

var subProcessExe = new CefSharp.BrowserSubprocess.BrowserSubprocessExecutable();

var result = subProcessExe.Main(args);

if (result > 0)

{

return result;

}

#endif

 

var settings = new CefSettings()

{

//By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data

CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\Cache")

};

 

#if NETCOREAPP

//We use our Applications exe as the BrowserSubProcess, multiple copies

//will be spawned

var exePath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

settings.BrowserSubprocessPath = exePath;

#endif

 

//Example of setting a command line argument

//Enables WebRTC

settings.CefCommandLineArgs.Add("enable-media-stream");

 

//Perform dependency check to make sure all relevant resources are in our output directory.

Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);

 

var browser = new BrowserForm();

Application.Run(browser);

return 0;

}

  1. 程序中使用CefChromium

  string path = "www.baidu.com";

  webBrower = new ChromiumWebBrowser(path) { Dock = DockStyle.Fill };//填充方式

  this.Controls.Add(webBrower);

也可以调用Load函数加载服务端url或者本地URL

 

  1. 向js注册本地函数

CefSharpSettings.LegacyJavascriptBindingEnabled = true;

CefSharpSettings.WcfEnabled = true;

string home = Util.pathToUrl(Util.addPath(workDir, "env/home.html"));

browser = new ChromiumWebBrowser(home);

browser.Dock = DockStyle.Fill;

this.toolStripContainer.ContentPanel.Controls.Add(browser);

var bindingOptions = new BindingOptions() { CamelCaseJavascriptNames = false };

var repo = browser.JavascriptObjectRepository;

 

repo.Register("X", new JsActor(), false, options: bindingOptions);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号