using System;
using System.Drawing;
// The 'windowHandle' parameter will contain the window handle for the:
// - Active window when run by hotkey
// - Trigger target when run by a Trigger 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)
{
// Get the monitor ID of the monitor that the mouse cursor is on
uint currentMonitor = GetCurrentMonitorByMouseCursor();
// Save the current monitor's mouse position to the registry
BFS.ScriptSettings.WriteValueInt("Monitor_" + currentMonitor.ToString() + "_X", BFS.Input.GetMousePositionX());
BFS.ScriptSettings.WriteValueInt("Monitor_" + currentMonitor.ToString() + "_Y", BFS.Input.GetMousePositionY());
// Move the mouse cursor to the saved position on the next monitor, if it exists
BFS.DisplayFusion.RunFunction("Move Mouse Cursor to Next Monitor");
currentMonitor = GetCurrentMonitorByMouseCursor();
int currentMonitorSavedMouseX = BFS.ScriptSettings.ReadValueInt("Monitor_" + currentMonitor.ToString() + "_X");
int currentMonitorSavedMouseY = BFS.ScriptSettings.ReadValueInt("Monitor_" + currentMonitor.ToString() + "_Y");
if (currentMonitorSavedMouseX != 0 && currentMonitorSavedMouseY != 0)
BFS.Input.SetMousePosition(currentMonitorSavedMouseX, currentMonitorSavedMouseY);
}
public static uint GetCurrentMonitorByMouseCursor()
{
// Figure out which monitor the mouse cursor is on
uint monitorID = BFS.Monitor.GetMonitorIDByRect(BFS.Monitor.GetMonitorBoundsByMouseCursor());
// Return the monitor ID
return monitorID;
}
}