Processing Ajax...

Close Dialog


Close Dialog

Close Dialog

Move Window to Monitor Edge if it's Within 10px

If a window is within 10px of a monitor edge, this function will snap it over to the monitor edge. Works well if you run it from a Trigger rule.
Minimum Version
Created By
Keith Lammers (BFS)
Date Created
Sep 13, 2017
Date Last Modified
Sep 13, 2017

Scripted Function (Macro) Code

using System;
using System.Drawing;

// The 'windowHandle' parameter will contain the window handle for the:
//   - Active window when run by hotkey
//   - Trigger target when run by a Trigger 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 window bounds and monitor bounds
		Rectangle windowBounds = BFS.Window.GetBounds(windowHandle);
		Rectangle monitorBounds = BFS.Monitor.GetMonitorBoundsByWindow(windowHandle);
		// Check to see if X and/or Y need adjusting
		bool adjustX = windowBounds.X < (monitorBounds.X + 10);
        bool adjustY = windowBounds.Y < (monitorBounds.Y + 10);
        // If they don't need adjusting, exit the script
        if (!adjustX && !adjustY)
        // Set the new X and/or Y values
        int newX;
        int newY;
        if (adjustX)
            newX = monitorBounds.X;
            newX = windowBounds.X;
        if (adjustY)
            newY = monitorBounds.Y;
            newY = windowBounds.Y;
        // Move the window
        BFS.Window.SetLocation(windowHandle, newX, newY);