SIGN IN SIGN UP
cefsharp / CefSharp UNCLAIMED

.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework

0 0 0 C#
// Copyright © 2010 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
2018-09-17 00:46:21 +02:00
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
2012-02-24 18:33:38 -08:00
using CefSharp.Example;
using CefSharp.Example.Handlers;
using CefSharp.WinForms.Example.Handlers;
using CefSharp.WinForms.Example.Minimal;
2010-12-03 16:22:41 +00:00
2012-02-23 13:20:34 -08:00
namespace CefSharp.WinForms.Example
2010-12-03 16:22:41 +00:00
{
public class Program
2010-12-03 16:22:41 +00:00
{
[STAThread]
public static int Main(string[] args)
2010-12-03 16:22:41 +00:00
{
// DEMO: Change to true to self host the BrowserSubprocess.
// instead of using CefSharp.BrowserSubprocess.exe, your applications exe will be used.
// In this case CefSharp.WinForms.Example.exe
const bool selfHostSubProcess = false;
if (selfHostSubProcess)
{
var exitCode = CefSharp.BrowserSubprocess.SelfHost.Main(args);
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 = System.IO.Path.GetFullPath("CefSharp.WinForms.Example.exe");
Cef.Initialize(settings);
Application.EnableVisualStyles();
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
// DEMO: To integrate CEF into your applications existing message loop
// set multiThreadedMessageLoop = false;
const bool multiThreadedMessageLoop = true;
// When multiThreadedMessageLoop = true then externalMessagePump must be set to false
// To enable externalMessagePump set multiThreadedMessageLoop = false and externalMessagePump = true
const bool externalMessagePump = false;
//TEST: There are a number of different Forms for testing purposes.
var browser = new BrowserForm(multiThreadedMessageLoop);
//var browser = new SimpleBrowserForm();
//var browser = new TabulationDemoForm();
IBrowserProcessHandler browserProcessHandler;
if (multiThreadedMessageLoop)
{
browserProcessHandler = new BrowserProcessHandler();
}
else
{
if (externalMessagePump)
{
//Get the current taskScheduler (must be called after the form is created)
var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
browserProcessHandler = new ScheduleMessagePumpBrowserProcessHandler(scheduler);
}
else
{
//We'll add out WinForms timer to the components container so it's Diposed
browserProcessHandler = new WinFormsBrowserProcessHandler(browser.Components);
}
}
var settings = new CefSettings();
settings.MultiThreadedMessageLoop = multiThreadedMessageLoop;
settings.ExternalMessagePump = externalMessagePump;
CefExample.Init(settings, browserProcessHandler: browserProcessHandler);
Application.EnableVisualStyles();
//Application.Run(new MultiFormAppContext());
Application.Run(browser);
}
2010-12-03 16:22:41 +00:00
return 0;
2010-12-03 16:22:41 +00:00
}
}
}