private bool IsMaximized(Process p) { IntPtr handle; if (_processesAndMaximizedWindows.ContainsKey(p.Id)) { handle = _processesAndMaximizedWindows[p.Id]; } else { _processesAndMaximizedWindows.Add(p.Id, p.MainWindowHandle); handle = p.MainWindowHandle; } var placement = new WindowPlacement(); placement.length = Marshal.SizeOf(placement); if (WinAPIHelper.GetWindowPlacement(handle, ref placement)) { if (placement.showCmd == 3) // WM_MAXIMIZED { _processesAndMaximizedWindows[p.Id] = handle; return true; } } else if (_processesAndMaximizedWindows[p.Id] != p.MainWindowHandle) { _processesAndMaximizedWindows[p.Id] = p.MainWindowHandle; return IsMaximized(p); } else return false; // Error retrieving the Window placement return false; }
public static extern bool GetWindowPlacement(IntPtr hWnd, ref WindowPlacement lpwndpl);
public static extern bool GetWindowPlacement(IntPtr hWnd, ref WindowPlacement lpwndpl);