1)安装cefsharp.winform包

打开VS2017,打开nuget,找到cefsharp.winform,安装

问:为什么wpf程序不使用cefsharp.wpf?

答:因为cefwpf 49版本的bug很多,而winform_cef就比较靠谱,比如在不同的输入法切换后无法输入中文

问:那为什么不使用更高版本的cefwpf?

答:因为要支持XP,而49版本是cef_wpf能支持XP的最高版本

哦,业界毒瘤 ——XP和IE6

2):平台改成x64或者x86

因为Cefsharp没有针对AnyCpu的模式

3)代码如下:

 public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent(); //***这段代码很关键,而且只需执行一次即可,最好写在静态构造函数中*** //
var settings = new CefSharp.CefSettings();
settings.CefCommandLineArgs.Add("disable-gpu", "1");
settings.CefCommandLineArgs.Add("force-device-scale-factor", "2");
Cef.Initialize(settings);
//********************************************************* // var webbrowser = new ChromiumWebBrowser("https://www.baidu.com"); //为什么要用一个windowsformhost包起来,因为cef是winform的,所以在wpf下使用,必须用这个包一下
var winform = new WindowsFormsHost()
{
Child = webbrowser
}; //绑定,和js交互的关键,注册一个JsObj,这个可以自定义,然后对于js来说,第二个参数this就代表了JsObj
webbrowser.RegisterAsyncJsObject("JsObj", this, false);
this.Content = winform;
} public void (object pramas)
{
//可以通过这种方式取得参数
 var type = pramas.GetType();
var id=type.InvokeMember("id", System.Reflection.BindingFlags.GetProperty, null, pramas, null);
//do something.....
Application.Current.MainWindow.Dispatcher.BeginInvoke(new Action(() =>//报错
{
//do something.....
}));
Dispatcher.BeginInvoke(new Action(() => //不会报错
{
//do something.....
}));
}
}

上方代码中,display是被调方法,在执行display时,是子线程在执行,聪明的你一定想到了

那就Application.Current.MainWindow.Dispather.BeginInvoke,但是依然会报错,为什么?

因为在get mainwindow时依旧是操作了主线程的UI元素,所以改成下面那种方式即可

js代码:

<script type="text/javascript">
function abc()
{
JsObj.display(data);
}
</script>

WPF内嵌CEF控件,与JS交互的更多相关文章

  1. swt java 内嵌ActiveX控件

    这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...

  2. VB6 Webbowser控件与JS交互,无边框和屏蔽右键菜单

    1. 屏蔽右键菜单  在菜单中单击"工程"->"引用",在列表中找到"Microsoft HTML Object Library"打上 ...

  3. WPF内嵌网页的两种方式

    在wpf程序中,有时会内嵌网页.内嵌网页有两种方法,一种是使用wpf自带WebBrowser控件来调用IE内核,另一种是使用CefSharp包来调用chrom内核. 一.第一种使用自带WebBrows ...

  4. 在WPF中使用WinForm控件方法

    1.      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll. 2.      在要使用WinForm控 ...

  5. WPF中的ControlTemplate(控件模板)(转)

    原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板)     ...

  6. [转]在WPF中使用WinForm控件方法

    本文转自:http://blog.csdn.net/lianchangshuai/article/details/6415241 下面以在Wpf中添加ZedGraph(用于创建任意数据的二维线型.条型 ...

  7. NanUI文档 - 打包并使用内嵌式的HTML/CSS/JS资源

    NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...

  8. WPF 绑定StaticResource到控件的方法

    原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的<SolidColorBrush x:Key=&q ...

  9. WPF中的ControlTemplate(控件模板)

    原文:WPF中的ControlTemplate(控件模板) WPF中的ControlTemplate(控件模板)                                             ...

随机推荐

  1. 19-11-08-Night

    再咕咕咕会被爆捶吗??? ZJ: 喜闻乐见: 27 Miemeng 60 01:59:43 100 01:59:44 0 01:59:44 160 01:59:44 最水的$T1$挂了???? $T2 ...

  2. redis深入学习(一)-----CAP、redis数据类型

    NoSQL数据库的四大分类 KV键值: memcache+redis 文档型数据库(bson格式比较多): MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在 ...

  3. SpringBoot学习笔记(一):SpringBoot简介

    SpringBoot为什么这么火? 为什么学习SpringBoot?总的来说就是简单. 使用SpringBoot免除了很多配置文件,越来越容易上手. 更轻量级的Web开发,免除了我们以前的server ...

  4. centos安装gcc4.8.2

    1. 下载源码:镜像地址http://mirror.bjtu.edu.cn/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz用svn下载可以随时更新到最新的版本svn checko ...

  5. [原创]Java调用PageOffice给Word中的Table赋值

    Word中的table操作需要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.因此,要想使用table,则必须在w ...

  6. java基础之System类

    System类概述System 类包含一些有用的类字段和方法.它不能被实例化. 成员方法 public static void gc()运行垃圾回收器 public static void exit( ...

  7. fastjson对Date类型的格式化

    @JSONField(format="yyyy-MM-dd HH:mm:ss.SSS") private Date sendMqDate; //MQ发送时间

  8. css 实现头像周围光圈动态效果

    效果: html文件: <img class="userHead" src="xx/user.jpg"> css文件: .userHead{ wid ...

  9. yii2-user 一个好用的用户扩展

    最近使用yii2做了一个系统,涉及到了用户登录等等,之前是自己写的一套,后来要添加邮箱验证功能.有点懒,然后看到了yii2-user这个扩展.简单说下,毕竟自己研究也不深. http://yii2-u ...

  10. 1.Spring【IOC】XML方式

    1.下载开发包 http://repo.springsource.org/libs-release-local/org/springframework/spring 2.创建WEB工程,引入jar包 ...