Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Move Focused Window to Monitor 1, All Other Non-Minimized Windows to Monitor 2

Description
This script will move the focused window to monitor 1, and all other non-minimized windows to monitor 2. You can have this script run from a "Window Focused" Trigger rule to have it run automatically every time the window focus changes.
Language
C#.net
Minimum Version
Created By
Keith Lammers (BFS)
Contributors
-
Date Created
Jan 31, 2018
Date Last Modified
Jan 31, 2018

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)
	{
        // Move all windows that are on monitor 1 to monitor 2
        foreach (IntPtr window in BFS.Window.GetVisibleWindowHandles())
        {
            if (window != windowHandle && window != BFS.Application.GetMainWindowByFile(BFS.Application.GetMainFileByWindow(windowHandle)))
                BFS.Window.MoveToMonitor(2, window);
        }

		// Move the window passed in from the Trigger rule to monitor 1
		if (!BFS.Window.IsMinimized(windowHandle))
            BFS.Window.MoveToMonitor(1, windowHandle);
	}
}