namespace ytLive.Services; /// /// Identifies which monitor holds a full-screen window (a game/app running /// borderless or exclusive fullscreen). Seam so ScreenCaptureManager is /// testable without Win32 interop. /// public interface IFullScreenDetector { /// /// The index of the monitor a full-screen foreground window covers, or null /// when the foreground window is windowed, missing, or one of our own. /// int? GetForegroundFullScreenMonitorIndex(); /// Index of the primary (taskbar-hosting) monitor. int PrimaryMonitorIndex(); /// All monitors in capture-key order (enumeration order). IReadOnlyList GetDisplays(); /// /// Raised on the UI thread whenever the foreground window changes. /// Payload is the full-screen monitor index, or null when the new /// foreground window is not full-screen / is one of our own windows. /// event Action? FullscreenMonitorChanged; /// Hook EVENT_SYSTEM_FOREGROUND so fires. void StartWatching(); /// Unhook the foreground listener. void StopWatching(); }