public static bool WindowHasMouseOver(Process process) { IntPtr mainWindowHandle = process.MainWindowHandle; bool result; if (mainWindowHandle == IntPtr.Zero || process.HasExited) { result = false; } else if (ProgramThread.GetForegroundWindow() != mainWindowHandle) { result = false; } else { ProgramThread.WINDOWPLACEMENT wINDOWPLACEMENT = default(ProgramThread.WINDOWPLACEMENT); if (!ProgramThread.GetWindowPlacement(mainWindowHandle, ref wINDOWPLACEMENT)) { result = false; } else if (wINDOWPLACEMENT.showCmd != ProgramThread.ShowWindowCommands.Normal) { result = false; } else { ProgramThread.RECT rECT = default(ProgramThread.RECT); if (!ProgramThread.GetWindowRect(mainWindowHandle, out rECT)) { result = false; } else { ProgramThread.MousePoint mousePoint; ProgramThread.GetCursorPos(out mousePoint); Point position = new Point(mousePoint.X, mousePoint.Y); result = rECT.Contains(position); } } } return(result); }
private static extern bool GetWindowPlacement(IntPtr hWnd, ref ProgramThread.WINDOWPLACEMENT lpwndpl);