using System; using System.Drawing; // The 'windowHandle' parameter will contain the window handle for the: // - Active window when run by hotkey // - Window Location target when run by a Window Location rule // - TitleBar Button owner when run by a TitleBar Button // - Jump List owner when run from a Taskbar Jump List // - Currently focused window if none of these match public static class DisplayFusionFunction { public static void Run(IntPtr windowHandle) { //check to see if there was an error, if there was, exit function if (windowHandle == IntPtr.Zero) return; //get the position of the window in the monitor, and the current monitor Rectangle windowRect = BFS.Window.GetBounds(windowHandle); //Rectangle monitorRect = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle); // Get an array of the bounds for all monitors ignoring splits Rectangle[] monitorBoundsAll = BFS.Monitor.GetMonitorBoundsNoSplits(); // Get window pos Point winPosition = new Point(windowRect.X, windowRect.Y); foreach (Rectangle monitorRect in monitorBoundsAll) { if (monitorRect.Contains(winPosition)) { int iFinalWinX = monitorRect.X; int iFinalWinY = monitorRect.Y; int iFinalWinW = monitorRect.Width / 2; int iFinalWinH = monitorRect.Height; if( windowRect.X == iFinalWinX && windowRect.Y == iFinalWinY && windowRect.Width == iFinalWinW && windowRect.Height == iFinalWinH ) { return; } BFS.Window.SetSizeAndLocation(windowHandle, iFinalWinX, iFinalWinY, iFinalWinW, iFinalWinH ); } } } }