Beispiel #1
0
 public void FocusElectron()
 {
     //_logger.Info("Ensuring the electron window has focus");
     NativeWindowMethods.SetForegroundWindow(_windowHandle);
 }
Beispiel #2
0
        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);
            }
        }