Made some changes. The code below does not falsely return true when the taskbar is hidden or on the second screen. Tested under Win 7.
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int left; public int top; public int right; public int bottom; } [DllImport("user32.dll", SetLastError = true)] public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); [DllImport("user32.dll")] private static extern bool GetWindowRect(HandleRef hWnd, [In, Out] ref RECT rect); [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); public static bool IsForegroundFullScreen() { return IsForegroundFullScreen(null); } public static bool IsForegroundFullScreen(System.Windows.Forms.Screen screen) { if (screen == null) { screen = System.Windows.Forms.Screen.PrimaryScreen; } RECT rect = new RECT(); IntPtr hWnd = (IntPtr)GetForegroundWindow(); GetWindowRect(new HandleRef(null, hWnd), ref rect); if (screen.Bounds.Width == (rect.right - rect.left) && screen.Bounds.Height == (rect.bottom - rect.top)) { Console.WriteLine("Fullscreen!") return true; } else { Console.WriteLine("Nope, :-("); return false; } }
source share