private void Initialize() 
        {
            CfxRuntime.LibCefDirPath = @"cef\Release";
            int retval = CfxRuntime.ExecuteProcess();

            var app = new CfxApp();
            var processHandler = new CfxBrowserProcessHandler();
            app.GetBrowserProcessHandler += (sender, e) => e.SetReturnValue(processHandler);

            var path = Path.Combine(GetType().Assembly.GetPath(), "ChromiumFXRenderProcess.exe");

            var settings = new CfxSettings 
            {
                SingleProcess = false,
                BrowserSubprocessPath = path,
                WindowlessRenderingEnabled = true,
                MultiThreadedMessageLoop = true,
                NoSandbox = true,
                LocalesDirPath = System.IO.Path.GetFullPath(@"cef\Resources\locales"),
                ResourcesDirPath = System.IO.Path.GetFullPath(@"cef\Resources")
            };

            if (!CfxRuntime.Initialize(settings, app, RenderProcessStartup))
                throw new Exception("Failed to initialize CEF library.");

            Thread.Sleep(200);

        }
コード例 #2
0
ファイル: BrowserProcess.cs プロジェクト: xmcy0011/NanUI
        internal static void Initialize()
        {
            if(initialized)
                throw new HtmlUIException("ChromiumWebBrowser library already initialized.");

            int retval = CfxRuntime.ExecuteProcess();
            if(retval >= 0)
                Environment.Exit(retval);

            app = new CfxApp();
            processHandler = new CfxBrowserProcessHandler();

            app.GetBrowserProcessHandler += (s, e) => e.SetReturnValue(processHandler);
            app.OnBeforeCommandLineProcessing += (s, e) => HtmlUILauncher.RaiseOnBeforeCommandLineProcessing(e);
            app.OnRegisterCustomSchemes += (s, e) => HtmlUILauncher.RaiseOnRegisterCustomSchemes(e);

            var settings = new CfxSettings();
            settings.MultiThreadedMessageLoop = true;
            settings.NoSandbox = true;

            HtmlUILauncher.RaiseOnBeforeCfxInitialize(settings, processHandler);

            if(!CfxRuntime.Initialize(settings, app, RenderProcess.RenderProcessMain))
                throw new HtmlUIException("Failed to initialize CEF library.");

            initialized = true;
        }
コード例 #3
0
        internal static void get_browser_process_handler(IntPtr gcHandlePtr, out IntPtr __retval)
        {
            var self = (CfxApp)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target;

            if (self == null || self.CallbacksDisabled)
            {
                __retval = default(IntPtr);
                return;
            }
            var e            = new CfxGetBrowserProcessHandlerEventArgs();
            var eventHandler = self.m_GetBrowserProcessHandler;

            if (eventHandler != null)
            {
                eventHandler(self, e);
            }
            e.m_isInvalid = true;
            __retval      = CfxBrowserProcessHandler.Unwrap(e.m_returnValue);
        }