using System; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.Collections.Generic; // Fade all monitors to black over a two second period // Fade in when run again // Based entirely on Thomas Malloch's very brilliant Dim All Monitors Except Primary // Hope he will forgive the change to K&R style and general clean-up to be more abbreviated // 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 { private static readonly string SettingName = "BlackenMonitors_Run"; private static Point OrigMousePos; public static void Run(IntPtr windowHandle) { //toggle the setting from run to not run, and vice versa ToggleSetting(); if (RunFadeMonitors()) { var mmb = BFS.Monitor.GetMonitorBoundsByMouseCursor(); OrigMousePos = Cursor.Position; BFS.Input.SetMousePosition(OrigMousePos.X, mmb.Height); //add all monitors to the list of monitors that will be dimmed var forms = new List