C# : CEF操作

代码挺差的,仅供学习、参考

    class CEFGlueLoader
    {
        class CefAppImpl : CefApp
        {
            protected override void OnBeforeCommandLineProcessing(string processType, CefCommandLine commandLine)
            {
                commandLine.AppendArgument("enable-npapi");
                commandLine.AppendSwitch("enable-media-stream", "enable-media-stream");
                commandLine.AppendSwitch("process-per-site");
                commandLine.AppendSwitch("ppapi-flash-version", "23.0.0.185");//PepperFlash\manifest.json中的version
                commandLine.AppendSwitch("ppapi-flash-path", "PepperFlash\\pepflashplayer.dll");
            }
        }

        public static void InitCEF()
        {
#if !_ORG_MANAGER && !_MBMAKER
            CefRuntime.Load();
            string[] args = new string[0];
            var mainArgs = new CefMainArgs(args);
            var app = new CefAppImpl();
            var exitCode = CefRuntime.ExecuteProcess(mainArgs, app);
            System.Diagnostics.Trace.WriteLine("CefRuntime.ExecuteProcess return: " + exitCode);
            if (exitCode != -1)
            {
                return;
            }

            var settings = new CefSettings
            {
                BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"bin\Cef3Process.exe"),
                SingleProcess = false,
                MultiThreadedMessageLoop = true,
                LogSeverity = CefLogSeverity.Default,
                LogFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"log\CefGlue.log"),
                CachePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"cache"),
                CommandLineArgsDisabled = true,
                Locale = "zh_CN",
                LocalesDirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"bin\locales"),
                RemoteDebuggingPort = 7789,

            };
            CefRuntime.Initialize(mainArgs, settings, app);

            if (!settings.MultiThreadedMessageLoop)
            {
                System.Windows.Forms.Application.Idle += (sender, e) => { CefRuntime.DoMessageLoopWork(); };
            }
#endif
        }

        private static string GetPath(string v)
        {
            return Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, v));
        }

        public static void ShutDownCEF()
        {
#if !_ORG_MANAGER && !_MBMAKER
            try
            {
                CefRuntime.Shutdown();
            }
            catch (Exception)
            {
            }
#endif
        }
    }

时间: 2024-10-11 06:47:32

C# : CEF操作的相关文章

qt cef嵌入web

原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium Embedded Framework)简述 嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件.CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去. 它

利用CEF山寨一个翻译器

起因 在某些情况下,有将从某种类型的语言翻译成另一种类型语言的需求.比如在生成实体时,可能需要将中文名称转换成英文.于是利用CEFSharp山寨了一个翻译器.效果图如下: CEF简介 CEF全称为Chromium Emmbed Framework,是一个开源项目.用于嵌入基于 Google Chromium 项目的 Web 浏览器控件. CEF在.NET中的应用 CEF是由C++所写,无法直接应用到.NET中.需要通过某种形式进行包装.常见的有Xilium.CefGlue和CEFSharp.我个

[原创]嵌入CEF遇到的问题及解决方案

这几天程序嵌入谷歌浏览器,各种坑,不容易,记录之...希望到此为止 1. 开了多进程模式之后,渲染进程RenderProcess断点没有进入. 只有在单进程模式(CefSingleProcess为true)下调试,渲染进程的断点才会进入.如果开多进程模式,那么渲染进程是在另外一个进程,不是主进程,当前调试进程是主进程,所以就没法进入渲染进程的断点,但是实际上,渲染进程的RenderProcessHandler的方法还是会被触发的. 2. 在渲染进程操作浏览器进程没有效果. 渲染进程(Render

初识CEF

介绍 CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目.Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持.CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟踪具体Chromium版本的分支,以及二进制包.CEF的大部分特性都提供了丰富的默认实现,让使用者做尽量少的定制即可满足需求.在本文发布的时候,世界上已

CEF中访问修改HTML DOM元素

有时你可能想在C++代码中直接操作HTML中的某个元素,比如改变某个按钮的状态(文字.颜色)等,此时可以使用CEF提供的CefDomVisitor.CefDOMDocument.CefDomNode这三个类,包含cef_dom.h即可. 我们可以用它们完成下列任务: 使用DOM模型访问HTML的各种节点(Element.Attribute.Text.CDATA.Comment.Document等) 修改某个元素的属性 修改某个Text节点的值 下面简要说说各个类的用法. CefDOMDocume

Cef功能开发经验总结

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/70159672 这是我开发Cef功能时对踩过的坑,进行的总结,话说Cef坑真的不少.好在踩完后用起来还是挺爽的.最终的代码可以下载网易云信PC Demo点我跳转 资料准备 这是我集成过程中查到的一些资料,包括了Cef开发的各方面资料 在调试Cef时需要Cef的pdb和源码: Cef及pdb文件下载地址,其中的CefClient包含了Cef绝大多数功能的示例:https:/

Duilib嵌入CEF禁止浏览器响应拖拽事件

在开发中有一个需求,拖拽外部文件到客户端,然后客户端响应WM_DROPFILES消息,在拖拽消息里处理一下业务,最后把处理结果显示到客户区html中,但实际中发现当拖拽文件到客户区,浏览器首先处理了拖拽事件,外层的Win32窗口无法捕捉到拖拽消息,因此要想实现此操作,刚开始我想了一个本办法,在客户区最外层罩了一个透明的Win32原生窗口,这样拖拽文件时,在最外层透明窗口的WM_DROPFILES消息中处理具体业务,最后用C++调用js函数,在页面显示处理结果. 方法一: 透明窗口 Layered

转:CEF嵌入到单文档mfc

1.下载: http://www.magpcss.net/cef_downloads/下载cef binary 1.1364.1123 windows.zip(可能要FQ,百度goagent教程,最好使用谷歌浏览器FQ下载,因为goagent有chrome的插件) 2.编译: http://dev.chromium.org/developers/how-tos/build-instructions-windows(可能要搭建许多开发环境,考验你网速的时候到了) 如果没法编译,去我的资源下载,就是

C++ CEF 浏览器中显示 Tooltip(标签中的 title 属性)

在 Windows 中将 CEF 集成到 C++ 客户端以后,默认是无法显示 tooltip 的,比如图片标签中的 title 属性. 实现的方式其实很简单,按下面的步骤操作就可以: 创建一个文本文件,文件名为 app.manifest,内容如下,将这个文件放到源代码文件夹 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="