Processing Ajax...

Close Dialog


Close Dialog

Close Dialog

A recent AVG and Avast antivirus update is preventing DisplayFusion 9.9 from launching on some systems.
If you're running into this issue, please update to the latest DisplayFusion 10.0 Beta.

Move all except specific windows to monitor 2

This script will move all windows except for ones with specific text in their window titles. You can set the exclusions on line 26.
Minimum Version
Created By
Date Created
Nov 4, 2022
Date Last Modified
Nov 4, 2022

Scripted Function (Macro) Code

using System;
using System.Drawing;
using System.Diagnostics;

// 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)
		//enumerate window handles from monitor 1
		foreach(IntPtr handle in BFS.Window.GetVisibleWindowHandlesByMonitor(1))
			//get the window's appId
			uint appId = BFS.Application.GetAppIDByWindow(handle);
			//get the process that the window belongs to
			Process process = Process.GetProcessById((int)appId);
			//if the process is something we want on that monitor,
			//continue to the next window handle
			if(process.ProcessName.ToLower().Contains("teams") || process.ProcessName.ToLower().Contains("outlook") || process.ProcessName.ToLower().Contains("aws"))
			//if we got this far, this window handle is unwanted.
			//move it to another monitor
			BFS.Window.MoveToMonitor(2, handle);