Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Confirm
Close Dialog

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

Description
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.
Language
C#.net
Minimum Version
Created By
Keith Lammers (BFS)
Contributors
-
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)
            return;
        
        // Set the new X and/or Y values
        int newX;
        int newY;
        
        if (adjustX)
            newX = monitorBounds.X;
        else
            newX = windowBounds.X;
            
        if (adjustY)
            newY = monitorBounds.Y;
        else
            newY = windowBounds.Y;
        
        // Move the window
        BFS.Window.SetLocation(windowHandle, newX, newY);
	}
}