public void FocusElectron() { //_logger.Info("Ensuring the electron window has focus"); NativeWindowMethods.SetForegroundWindow(_windowHandle); }
private void SyncWindowState(string newWindowState) { _logger.Info("Setting window state to {0}", newWindowState); try { FormWindowState newState; bool fullscreen = false; if (string.Equals(newWindowState, "fullscreen", StringComparison.OrdinalIgnoreCase)) { newState = FormWindowState.Maximized; fullscreen = true; } else if (string.Equals(newWindowState, "maximized", StringComparison.OrdinalIgnoreCase)) { newState = FormWindowState.Maximized; fullscreen = true; } else if (string.Equals(newWindowState, "minimized", StringComparison.OrdinalIgnoreCase)) { newState = FormWindowState.Minimized; } else { newState = FormWindowState.Normal; } _form.InvokeIfRequired(() => { _form.WindowState = newState; if (fullscreen) { //NativeWindowMethods.SetWindowPos(_windowHandle, -1, _form.Left, _form.Top, _form.Width, _form.Height, 0); //var placement = new WINDOWPLACEMENT(); //placement.showCmd = ShowWindowCommands.Maximized; //placement.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT)); //NativeWindowMethods.SetWindowPlacement(_windowHandle, ref placement); } else if (newState == FormWindowState.Maximized) { //NativeWindowMethods.SetWindowPos(_windowHandle, -1, _form.Left, _form.Top, _form.Width, _form.Height, 0); //var placement = new WINDOWPLACEMENT(); //placement.showCmd = ShowWindowCommands.Maximized; //placement.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT)); //NativeWindowMethods.SetWindowPlacement(_windowHandle, ref placement); } else if (newState == FormWindowState.Normal) { //NativeWindowMethods.SetWindowPos(_windowHandle, -2, _form.Left, _form.Top, _form.Width, _form.Height, 0); //NativeWindowMethods.SetWindowPlacement(_windowHandle, ref placement); } }); if (newState != FormWindowState.Minimized) { NativeWindowMethods.SetForegroundWindow(_windowHandle); } } catch (Exception ex) { _logger.ErrorException("Error syncing window positions", ex); } }