Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Move Unwanted Windows Off of a Monitor

Description
This function checks all of the windows of a monitor every second. If a window doesn't belong to Skype, the script moves the window to another monitor.
Language
C#.net
Minimum Version
Created By
Thomas Malloch (BFS)
Contributors
-
Date Created
Mar 17, 2015
Date Last Modified
Mar 17, 2015

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)
	{
		//run this script until the user cancels it
		while(true) 
		{
			//enumerate window handles from monitor 2
			foreach(IntPtr handle in BFS.Window.GetVisibleWindowHandlesByMonitor(2))
			{
				//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.Equals("Skype"))
					continue;
					
				//if we got this far, this window handle is unwanted.
				//move it to another monitor
				BFS.Window.MoveToMonitor(3, handle);				
			}
			
			//sleep for one second before we check again
			BFS.General.Sleep(1000);
		}
	}
}