using System; using System.Diagnostics; using System.Runtime.InteropServices; using CefSharp; using CefSharp.BrowserSubprocess; namespace TweetDuck.Browser{ static class Program{ internal const string Version = "1.2.1.0"; private static int Main(string[] args){ SubProcess.EnableHighDPISupport(); const string typePrefix = "--type="; string type = Array.Find(args, arg => arg.StartsWith(typePrefix, StringComparison.OrdinalIgnoreCase)).Substring(typePrefix.Length); if (type == "renderer"){ using(RendererProcess subProcess = new RendererProcess(args)){ return subProcess.Run(); } } else return SubProcess.ExecuteProcess(); } private sealed class RendererProcess : SubProcess{ // ReSharper disable once ParameterTypeCanBeEnumerable.Local public RendererProcess(string[] args) : base(args){} public override void OnBrowserCreated(CefBrowserWrapper wrapper){ base.OnBrowserCreated(wrapper); using(Process me = Process.GetCurrentProcess()){ PostMessage(HWND_BROADCAST, RegisterWindowMessage("TweetDuckSubProcess"), new UIntPtr((uint)me.Id), new IntPtr(wrapper.BrowserId)); } } } private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xFFFF); [DllImport("user32.dll")] private static extern bool PostMessage(IntPtr hWnd, uint msg, UIntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] private static extern uint RegisterWindowMessage(string messageName); } }