Processing Ajax...

Close Dialog


Close Dialog

Close Dialog

Swap All Windows to Specified Monitor

This functions swaps all of the windows from the monitor that contains the selected window, to a monitor of the user's choice.
Minimum Version
Created By
Thomas Malloch (BFS)
Date Created
Oct 6, 2014
Date Last Modified
Oct 6, 2014

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)
		//if the passed window handle doesn't exist, exit the function
		if (windowHandle == IntPtr.Zero)
		//get the source monitor id
		uint monitorSrc = BFS.Monitor.GetMonitorIDByWindow(windowHandle);
		//get the destination monitor id
		uint monitorDest = BFS.Monitor.ShowMonitorSelector();
		//store all of the window handles in the source monitor
		IntPtr[] srcWindows = BFS.Window.GetVisibleWindowHandlesByMonitor(monitorSrc);
		//move all of the windows in the destination monitor to the source monitor
		foreach (IntPtr window in BFS.Window.GetVisibleWindowHandlesByMonitor(monitorDest))
			BFS.Window.MoveToMonitor(monitorSrc, window);
		//move all of the windows in the source monitor to the destination monitor
		foreach (IntPtr window in srcWindows)
			BFS.Window.MoveToMonitor(monitorDest, window);