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) { //get the bounds of the current window Rectangle windowBounds = BFS.Window.GetBounds(windowHandle); //get the bounds of the current monitor Rectangle monitorBounds = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle); //if the window is maximized, unmaximize it before resizing if(BFS.Window.IsMaximized(windowHandle)) BFS.Window.Restore(windowHandle); //if the window is close in size to 50%, size the window to 70% //otherwise, size the window to 50% if(IsWithin(windowBounds.Width, (int)(monitorBounds.Width * 0.3f), 10)) BFS.Window.SetSizeAndLocation(windowHandle, monitorBounds.Left, monitorBounds.Top, (int)(monitorBounds.Width * 0.5f), monitorBounds.Height); else if(IsWithin(windowBounds.Width, (int)(monitorBounds.Width * 0.5f), 10)) BFS.Window.SetSizeAndLocation(windowHandle, monitorBounds.Left, monitorBounds.Top, (int)(monitorBounds.Width * 0.7f), monitorBounds.Height); else BFS.Window.SetSizeAndLocation(windowHandle, monitorBounds.Left, monitorBounds.Top, (int)(monitorBounds.Width * 0.3f), monitorBounds.Height); } //this function returns true if a value is close to another value private static bool IsWithin(int value, int target, int threshold) { return (value == target) || ((value >= target - threshold) && (value <= target + threshold)); } }