Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

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);
		}
	}
}