SIGN IN SIGN UP
cefsharp / CefSharp UNCLAIMED

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

0 0 0 C#
// Copyright © 2016 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.
#pragma once
#include "Stdafx.h"
#include "include/cef_app.h"
#include "SubProcessApp.h"
#include "CefBrowserWrapper.h"
#include "CefAppUnmanagedWrapper.h"
#include "Cef.h"
using namespace System::Collections::Generic;
using namespace System::Linq;
using namespace CefSharp::Internals;
using namespace CefSharp::RenderProcess;
namespace CefSharp
{
2016-05-31 08:27:58 +10:00
namespace BrowserSubprocess
{
// Wrap CefAppUnmangedWrapper in a nice managed wrapper
public ref class SubProcess
{
private:
MCefRefPtr<CefAppUnmanagedWrapper> _cefApp;
2016-05-31 08:27:58 +10:00
public:
SubProcess(IRenderProcessHandler^ handler, IEnumerable<String^>^ args)
2016-05-31 08:27:58 +10:00
{
auto onBrowserCreated = gcnew Action<CefBrowserWrapper^>(this, &SubProcess::OnBrowserCreated);
auto onBrowserDestroyed = gcnew Action<CefBrowserWrapper^>(this, &SubProcess::OnBrowserDestroyed);
auto schemes = CefCustomScheme::ParseCommandLineArguments(args);
auto enableFocusedNodeChanged = CommandLineArgsParser::HasArgument(args, CefSharpArguments::FocusedNodeChangedEnabledArgument);
_cefApp = new CefAppUnmanagedWrapper(handler, schemes, enableFocusedNodeChanged, onBrowserCreated, onBrowserDestroyed);
2016-05-31 08:27:58 +10:00
}
2016-05-31 08:27:58 +10:00
!SubProcess()
{
_cefApp = nullptr;
}
2016-05-31 08:27:58 +10:00
~SubProcess()
{
this->!SubProcess();
}
2016-05-31 08:27:58 +10:00
int Run()
{
auto hInstance = Process::GetCurrentProcess()->Handle;
2016-05-31 08:27:58 +10:00
CefMainArgs cefMainArgs((HINSTANCE)hInstance.ToPointer());
return CefExecuteProcess(cefMainArgs, (CefApp*)_cefApp.get(), nullptr);
2016-05-31 08:27:58 +10:00
}
2016-05-31 08:27:58 +10:00
virtual void OnBrowserCreated(CefBrowserWrapper^ cefBrowserWrapper)
{
2016-05-31 08:27:58 +10:00
}
2016-05-31 08:27:58 +10:00
virtual void OnBrowserDestroyed(CefBrowserWrapper^ cefBrowserWrapper)
{
2016-05-31 08:27:58 +10:00
}
static int ExecuteProcess(IEnumerable<String^>^ args)
2016-05-31 08:27:58 +10:00
{
auto hInstance = Process::GetCurrentProcess()->Handle;
2016-05-31 08:27:58 +10:00
CefMainArgs cefMainArgs((HINSTANCE)hInstance.ToPointer());
auto schemes = CefCustomScheme::ParseCommandLineArguments(args);
CefRefPtr<CefApp> app = new SubProcessApp(schemes);
return CefExecuteProcess(cefMainArgs, app, nullptr);
2016-05-31 08:27:58 +10:00
}
};
}
}