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)
{
//set the target monitor a monitor of your choosing.
//if it is a split monitor, set it to the first split's ID
uint targetMonitor = 101;
//check to see what monitor the window is currently in
uint monitor = BFS.Monitor.GetMonitorIDByWindow(windowHandle);
//check to see if we moving into a split monitor
if(targetMonitor > 100)
{
//if we aren't anywhere near the monitor, move it in
if(targetMonitor / 100 != monitor / 100)
{
BFS.Window.MoveToMonitor(targetMonitor, windowHandle);
return;
}
else
{
//we are in the split monitor. check to see if the next split exists
Rectangle monitorBounds = BFS.Monitor.GetMonitorBoundsByID(++monitor);
//if it doesnt exist, move it into the first split
if(monitorBounds.Width == 0 || monitorBounds.Height == 0)
{
//strip the last two digits off the monitor, add them back
//and add one for the first split
BFS.Window.MoveToMonitor(monitor / 100 * 100 + 1, windowHandle);
return;
}
//if it does exist, move to the next split
BFS.Window.MoveToMonitor(monitor, windowHandle);
}
}
else
{
//if the window isn't in the current monitor, move it in
if(monitor != targetMonitor)
BFS.Window.MoveToMonitor(targetMonitor, windowHandle);
}
}
}