关于CefSharp使用的一些备忘

相关资料:how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application

     CefSharp中文帮助文档

一、安装及设置

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>

二、基本使用

1、初始化及加载

public ChromiumWebBrowser chromeBrowser;

public void InitializeChromium()
{
    CefSettings settings = new CefSettings();    settings.Locale = "zh-CN";//界面中文化,例如右键菜单    settings.AcceptLanguageList="zh-CN";//HTTP Header Accept-Language
    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();
}

2、调用JS

string fun="alert(‘demo‘)";
Task<CefSharp.JavascriptResponse> t = chromeBrowser.EvaluateScriptAsync(fun);
t.Wait();
if (!t.IsFaulted && t.Result.Success == true)
{ 
  //var res=t.Result.Result;
  //t.Result.Result是object类型,如果js返回是一个数组,则是object[],无返回值的js则为null
  //todo

}  

3、其他常用备忘

chromeBrowser.Reload();//刷新(会读缓存)
chromeBrowser.Reload(false);//彻底刷新
chromeBrowser.Load("http://www.baidu.com")//加载指定页面
var res =await chromeBrowser.GetSourceAsync();//读取源码

原文地址:https://www.cnblogs.com/new-class/p/11828722.html

时间: 2024-10-10 04:16:22

关于CefSharp使用的一些备忘的相关文章

RxJava & RxAndroid备忘

"你问我要去向何方,我指着大海的方向" 今天在刷G+的时候看到Dave Smith推荐了一个视频 <Learning RxJava (for Android) by example> 点进去看了一下,原来是位熟悉的"阿三哥",视频封面如下:(没有歧视的意思,不要喷我啊~,为什么感到熟悉?接着往下看) 几乎同时也看到了JetBrains在G+也推荐了篇在Medium上的博文 <RxAndroid And Kotlin (Part 1)> ,然后

工作备忘:cacti&nagios登录密码修改方法

[[email protected]]# mysql -u root -p mysql> use cacti; mysql> select * from user_auth; mysql> update user_auth set password=md5("cactipasswd") where id='1'; 现在cacti登录的新密码就是cactipasswd [[email protected]]# /usr/bin/htpasswd /usr/local/n

备忘-linux文件系统结构

用apache的时候总是要进入/var/www, 用久了开始好奇这些个目录都是派什么用处的,简单整理了一下 /bin 存放二进制命令文件,这个目录下面不允许存在子目录/boot bootloader的静态文件,当然OS的文件也必须在这里/dev 设备文件,MAKEDEV命令可以创建设备/etc 特定主机的配置文件,必须是静态文件,非可执行文件: opt, X11, sgml, xml/home 用户目录 /lib 存放主要的共享库和核心模块/media 可移除媒体的挂载点: floppy, cd

[转]Windows环境下尝试安装并配置PHP PEAR备忘

转自:http://wangye.org/blog/archives/266/ 什么是PEAR 来自百度百科:PEAR 是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR之于PHP就像是CPAN(Comprehensive Perl Archive Network)之于Perl. 由此可见PEAR是PHP代码的仓库,在这里可以找到很多有用的代码,避免我们重复写一些功能,

Table view 备忘

Table view 备忘 本篇会以备忘为主,主要是一些基础的代理方法和数据源方法具体的优化好点子会后续跟上. Table view的数据源方法 必须实现的数据源方法 // 返回每一行的cell,可以做缓存处理,同样也可能会造成复用问题. func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { // tableview 和 cell 都是在s

oracle下 启动subversion命令 及 oracle相关服务启动备忘

linux shell下  svnserve - d -r + 目录   例如:svnserve -d -r /svn 启动 svn服务. 访问svn://192.168.0.120/kjcg 测试. 启动oracle: 一.如何启动数据库实例 1.进入到sqlplus启动实例 [[email protected] ~]$ su - oracle --“切换到oracle用户” 2. Password: [[email protected] ~]$ lsnrctl start  --“打开监听”

linux下常用命令备忘

转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删除退格键,按住CTL键同时按delete Linux搜索 # find / -name "xxx.conf" 查看linux是32位还是64位的命令 #file /sbin/init #getconf LONG_BIT #getconf -a 在Linux和Windows下都可以用nslo

PHP设计模式之备忘模式

1.Norton Ghost的方便与问题 我们大多数win的用户都用过Norton Ghost,只要将目前系统备份一下生成镜像文件,等系统中毒或崩溃的时候,用Norton Ghost恢复一下就回到备份时候的样子了. 这个可以说就是备忘(Memento)模式的基本原理了,先备份,需要的时候恢复.因此备忘模式是比较好理解的. 但在实际应用中,如何正确的应用备忘模式,是需要注意的. 难道我们在word写文章的时候,先要Ghost备份一下所有的硬盘,一旦文章写错了,需要恢复,就用Ghost覆盖硬盘? 就

Notepad++ 常用快捷键 (备忘)

最近在学习Lua,用Notepad++ 作为编译器. 今早无意间按下 Ctrl+D ,结果就神奇般的复制并粘贴当行了,突然觉得Notepad++ 这东西很神奇. 网上查找了Notepad++的快捷键,尝试 Ctrl+Q 的时候,小有感慨,这丫太神奇了. 现将Notepad++快捷键做简单记录,备忘用. Ctrl+D    复制并粘贴当行 Ctrl+L     删除当前行 Ctrl+T    上下行交换 Ctrl+W   关闭当前文档 Ctrl+Q    注释/取消注释 Ctrl+Tab