public MultiFormAppContext(bool multiThreadedMessageLoop) { form1 = new SimpleBrowserForm(multiThreadedMessageLoop, new MultiFormFocusHandler()); form1.WindowState = FormWindowState.Normal; form2 = new SimpleBrowserForm(multiThreadedMessageLoop, new MultiFormFocusHandler()); form2.WindowState = FormWindowState.Normal; form1.FormClosed += OnFormClosed; form2.FormClosed += OnFormClosed; form1.Show(); form2.Show(); }
public MultiFormAppContext() { form1 = new SimpleBrowserForm(); form1.WindowState = FormWindowState.Normal; form2 = new SimpleBrowserForm(); form2.WindowState = FormWindowState.Normal; form1.FormClosed += OnFormClosed; form2.FormClosed += OnFormClosed; MainForm = form1; form1.Show(); form2.Show(); }
public static int Main(string[] args) { const bool simpleSubProcess = false; Cef.EnableHighDPISupport(); //NOTE: Using a simple sub processes uses your existing application executable to spawn instances of the sub process. //Features like JSB, EvaluateScriptAsync, custom schemes require the CefSharp.BrowserSubprocess to function if (simpleSubProcess) { var exitCode = Cef.ExecuteProcess(); if(exitCode >= 0) { return exitCode; } #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif var settings = new CefSettings(); settings.BrowserSubprocessPath = "CefSharp.WinForms.Example.exe"; Cef.Initialize(settings); var browser = new SimpleBrowserForm(); Application.Run(browser); } else { #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif const bool multiThreadedMessageLoop = true; CefExample.Init(false, multiThreadedMessageLoop: multiThreadedMessageLoop); if (multiThreadedMessageLoop == false) { //http://magpcss.org/ceforum/apidocs3/projects/%28default%29/%28_globals%29.html#CefDoMessageLoopWork%28%29 //Perform a single iteration of CEF message loop processing. //This function is used to integrate the CEF message loop into an existing application message loop. //Care must be taken to balance performance against excessive CPU usage. //This function should only be called on the main application thread and only if CefInitialize() is called with a CefSettings.multi_threaded_message_loop value of false. //This function will not block. Application.Idle += (s, e) => Cef.DoMessageLoopWork(); } var browser = new BrowserForm(); //var browser = new SimpleBrowserForm(); //var browser = new TabulationDemoForm(); Application.Run(browser); } return 0; }
public static int Main(string[] args) { const bool simpleSubProcess = false; //Until https://bitbucket.org/chromiumembedded/cef/issues/1995/ is resolved it's nessicary to //deal with the spawning of the crashpad process here as it's not possible to configure which exe it uses //When running from within VS and using the vshost process you'll see an error in the log and this won't get called. var crashpadHandlerExitCode = Cef.ExecuteProcess(); //crashpadHandlerExitCode will be -1 for normal process execution, only when running as a subprocess will it be greater if (crashpadHandlerExitCode >= 0) { return crashpadHandlerExitCode; } Cef.EnableHighDPISupport(); //NOTE: Using a simple sub processes uses your existing application executable to spawn instances of the sub process. //Features like JSB, EvaluateScriptAsync, custom schemes require the CefSharp.BrowserSubprocess to function if (simpleSubProcess) { var exitCode = Cef.ExecuteProcess(); if(exitCode >= 0) { return exitCode; } #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif var settings = new CefSettings(); settings.BrowserSubprocessPath = "CefSharp.WinForms.Example.exe"; Cef.Initialize(settings); var browser = new SimpleBrowserForm(); Application.Run(browser); } else { #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif const bool multiThreadedMessageLoop = true; var browser = new BrowserForm(multiThreadedMessageLoop); //var browser = new SimpleBrowserForm(); //var browser = new TabulationDemoForm(); IBrowserProcessHandler browserProcessHandler; if(multiThreadedMessageLoop) { browserProcessHandler = new BrowserProcessHandler(); } else { //Get the current taskScheduler (must be called after the form is created) var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); browserProcessHandler = new WinFormsBrowserProcessHandler(scheduler); } CefExample.Init(osr: false, multiThreadedMessageLoop: multiThreadedMessageLoop, browserProcessHandler: browserProcessHandler); Application.Run(browser); } return 0; }
public static int Main(string[] args) { const bool simpleSubProcess = false; Cef.EnableHighDPISupport(); //NOTE: Using a simple sub processes uses your existing application executable to spawn instances of the sub process. //Features like JSB, EvaluateScriptAsync, custom schemes require the CefSharp.BrowserSubprocess to function if (simpleSubProcess) { var exitCode = Cef.ExecuteProcess(); if(exitCode >= 0) { return exitCode; } #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif var settings = new CefSettings(); settings.BrowserSubprocessPath = "CefSharp.WinForms.Example.exe"; Cef.Initialize(settings); var browser = new SimpleBrowserForm(); Application.Run(browser); } else { #if DEBUG if (!System.Diagnostics.Debugger.IsAttached) { MessageBox.Show("When running this Example outside of Visual Studio" + "please make sure you compile in `Release` mode.", "Warning"); } #endif const bool multiThreadedMessageLoop = true; var browser = new BrowserForm(multiThreadedMessageLoop); //var browser = new SimpleBrowserForm(); //var browser = new TabulationDemoForm(); IBrowserProcessHandler browserProcessHandler; if(multiThreadedMessageLoop) { browserProcessHandler = new BrowserProcessHandler(); } else { //Get the current taskScheduler (must be called after the form is created) var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); browserProcessHandler = new WinFormsBrowserProcessHandler(scheduler); } CefExample.Init(osr: false, multiThreadedMessageLoop: multiThreadedMessageLoop, browserProcessHandler: browserProcessHandler); Application.Run(browser); } return 0; }