internal int InitializeProcessOnly() { var args = Environment.GetCommandLineArgs(); if (ProcessType == CefProcessType.Browser) { Logger.Error("This process is just only run as subprocess."); return(-1); } CefRuntime.Load(ChromiumEnvironment.LibCefDir); IsRuntimeInitialized = true; if (!ChromiumEnvironment.ForceHighDpiSupportDisabled) { CefRuntime.EnableHighDpiSupport(); } ChromiumEnvironment.CefBrowserSettingConfigurations?.Invoke(WinFormium.DefaultBrowserSettings); ApplicationConfiguration.UseExtensions[(int)ExtensionExecutePosition.SubProcessStartup]?.Invoke(this, ApplicationProperties); var cefMainArgs = new CefMainArgs(args); var app = new WinFormiumApp(); var exitCode = CefRuntime.ExecuteProcess(cefMainArgs, app, IntPtr.Zero); return(exitCode); }
internal int Initialize() { var args = Environment.GetCommandLineArgs(); if (ProcessType == CefProcessType.Browser) { var currentProcess = Process.GetCurrentProcess(); ApplicationConfiguration.UseExtensions[(int)ExtensionExecutePosition.MainProcessStartup]?.Invoke(this, ApplicationProperties); } CefRuntime.Load(ChromiumEnvironment.LibCefDir); IsRuntimeInitialized = true; if (ProcessType == CefProcessType.Browser) { var info = $@" Welcome to NanUI/0.8 Dev ({WinFormium.PlatformArchitecture}); Chromium/{CefRuntime.ChromeVersion}; WinFormium/{Assembly.GetExecutingAssembly().GetName().Version}; Copyrights (C) 2015-{DateTime.Now.Year} NetDimension Studio all rights reserved. Powered by Xuanchen Lin. {NanUI.Properties.Resources.ASCII_NanUI_Logo} This project is under LGPL-3.0 License. https://github.com/NetDimension/NanUI/blob/master/LICENCE "; Logger.Info(info); } if (!ChromiumEnvironment.ForceHighDpiSupportDisabled) { CefRuntime.EnableHighDpiSupport(); } ChromiumEnvironment.CefBrowserSettingConfigurations?.Invoke(WinFormium.DefaultBrowserSettings); ApplicationConfiguration.UseExtensions[(int)ExtensionExecutePosition.SubProcessStartup]?.Invoke(this, ApplicationProperties); var cefMainArgs = new CefMainArgs(args); var app = new WinFormiumApp(); var exitCode = CefRuntime.ExecuteProcess(cefMainArgs, app, IntPtr.Zero); Logger.Info(string.Format("CefRuntime.ExecuteProcess() returns {0}", exitCode)); if (exitCode != -1) { return(exitCode); } foreach (var arg in args) { if (arg.StartsWith("--type=")) { return(-2); } } RegisterCustomResourceHandler(new ResourceHandler.InternalResource.InternalSchemeConfiguration()); var settings = new CefSettings { LogSeverity = CefLogSeverity.Warning, ResourcesDirPath = ChromiumEnvironment.LibCefResourceDir, LocalesDirPath = ChromiumEnvironment.LibCefLocaleDir, Locale = Thread.CurrentThread.CurrentCulture.ToString(), AcceptLanguageList = Thread.CurrentThread.CurrentCulture.ToString(), JavaScriptFlags = "--expose-gc", CachePath = WinFormium.DefaultAppDataDirectory, }; settings.LogFile = Path.Combine(settings.CachePath, "debug.log"); ChromiumEnvironment.SettingConfigurations?.Invoke(settings); settings.MultiThreadedMessageLoop = true; settings.NoSandbox = true; if (!string.IsNullOrEmpty(ChromiumEnvironment.SubprocessPath)) { settings.BrowserSubprocessPath = ChromiumEnvironment.SubprocessPath; } CefRuntime.Initialize(new CefMainArgs(args), settings, app, IntPtr.Zero); ApplicationConfiguration.UseExtensions[(int)ExtensionExecutePosition.Initialized]?.Invoke(this, ApplicationProperties); foreach (var config in CustomResourceHandlerConfigurations) { config.OnResourceHandlerRegister(); if (!CefRuntime.RegisterSchemeHandlerFactory(config.Scheme, config.DomainName, config)) { throw new InvalidOperationException("ResouceHandler is fail to be registered"); } } var context = GetAppContext(); if (context == null) { context = ApplicationConfiguration.UseApplicationContext?.Invoke(); if (context != null) { context.ThreadExit += (_, args) => { Application.Exit(); }; } } if (context != null) { Application.Run(context); return(0); } Environment.Exit(-1); return(-1); }