Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Move Window to Opposite Side of Monitor

Description
This script will swap a window between the left and right side of the monitor, based on whether there is more space on the left or right side of the window.
Language
C#.net
Minimum Version
Created By
Keith Lammers (BFS)
Contributors
-
Date Created
Feb 12, 2020
Date Last Modified
Feb 12, 2020

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 monitor work area
		Rectangle monitorWorkArea = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle);
		
		// Get the current window bounds
		Rectangle currentWindowBounds = BFS.Window.GetBounds(windowHandle);
		
		// Move the window to the opposite side of the monitor, based on whether there's more space on the left or right side
		int leftSpace = currentWindowBounds.X - monitorWorkArea.X;
		int rightSpace = (monitorWorkArea.X + monitorWorkArea.Width) - (currentWindowBounds.X + currentWindowBounds.Width);
		
		if (leftSpace < rightSpace)
		{
            int x = (monitorWorkArea.X + monitorWorkArea.Width) - leftSpace - currentWindowBounds.Width;
            BFS.Window.SetLocation(windowHandle, x, currentWindowBounds.Y);
		}
		else if (leftSpace > rightSpace)
		{
            int x = monitorWorkArea.X + rightSpace;
            BFS.Window.SetLocation(windowHandle, x, currentWindowBounds.Y);
		}
	}
}