Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Move to Monitor 2 or Maximize on Monitor 1

Description
This script is best used with a Window Location rule. It will move an application to monitor 2 if it's available, and if monitor 2 is not attached, it will maximize the application on monitor 1.
Language
C#.net
Minimum Version
Created By
Thomas Malloch (BFS)
Contributors
-
Date Created
Feb 10, 2015
Date Last Modified
Feb 11, 2015

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
//   - 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 for the second monitor
		Rectangle bounds = BFS.Monitor.GetMonitorBoundsByID(2);
		
		//if the bounds is empty, the monitor is not attached
		if(bounds == Rectangle.Empty)
		{
			//move the window the first monitor and maximize it
			BFS.Window.MoveToMonitorMaximized(1, windowHandle);
			
			//exit the script
			return;
		}
		
		//if we got here, it means the second monitor is attached
		//move the monitor to the top left, and 55% width, 100% height
		BFS.Window.SetSizeAndLocation(windowHandle, bounds.X, 0, (int)(bounds.Width * 0.65f), bounds.Height);
	}
}