Beispiel #1
0
        void _winHook_WindowFocusChanged(object sender, WindowHandleEventArgs e)
        {
            if (_currentRefWindow == IntPtr.Zero)
            {
                return;
            }
            if (_currentRefWindow == e.WindowHandle)
            {
                return;
            }
            if (_lastSwitched == e.WindowHandle)
            {
                return;
            }

            using (var targw = Window.ForegroundWindow())
                using (var refw = new Window(_currentRefWindow))
                {
                    _lastSwitched = targw.Handle;
                    Direction[] tryOrder = { Direction.Left, Direction.Right, Direction.Down, Direction.Up };
                    foreach (var dir in tryOrder)
                    {
                        if (WindowArranger.MoveWindowRelativeScreenDirection(refw, targw, dir))
                        {
                            break;
                        }
                    }

                    refw.SendToFront();
                    targw.SendToFront();
                }
        }
Beispiel #2
0
 /// <summary>
 /// Event handler tries to force focused window to the front
 /// </summary>
 void winHook_WindowFocusChanged(object sender, WindowHandleEventArgs e)
 {
     if (!Win32.LockSetForegroundWindow(Win32.LSFW_UNLOCK))
     {
     }
     if (_locking && (e.WindowHandle != Handle) && (e.WindowHandle != _currentWindow))
     {
         SuspendLayout();
         TopMost = true;
         Win32.BringWindowToTop(Handle);
         Win32.SetForegroundWindow(Handle);
         TopMost = false;
         Win32.BringWindowToTop(_currentWindow);
         Win32.SetForegroundWindow(_currentWindow);
         ResumeLayout(false);
     }
     if (!Win32.LockSetForegroundWindow(Win32.LSFW_LOCK))
     {
     }
 }