C# : CEF操作

Posted 慧由心生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
        }
    }
View Code

 

以上是关于C# : CEF操作的主要内容,如果未能解决你的问题,请参考以下文章

C#搞跨平台UI,封装Cef作为Cpf的控件支持Windows,Linux,Mac

c# cef cfx ChromiumFx 新版本适配

C# 搞跨平台UI,封装Cef作为Cpf的控件

如何在CEF JS与browser进程间异步通信

C#程序员经常用到的10个实用代码片段

C# 最有用的(自定义)代码片段是啥? [关闭]