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

 

posted @ 2016-12-22 16:54  慧由心生  阅读(5633)  评论(0编辑  收藏  举报