我希望能够查询一些函数,并给它一个processID或processName – 然后它应该返回true
或false
这个进程是否在前台或没有。
所以,即Firefox的查询将返回true
(因为现在我在FireFox中,input这个),一切都应该返回false
。
这是甚至可能为每种types的应用程序(.net,java / swing,纯c ++ / win32-ui)?
GetForegroundWindow和GetWindowThreadProcessId应该让你得到这个信息。
也就是说,如果你知道这个pid,只需按照如下的函数进行检查:
bool IsForegroundProcess(DWORD pid) { HWND hwnd = GetForegroundWindow(); if (hwnd == NULL) return false; DWORD foregroundPid; if (GetWindowThreadProcessId(hwnd, &foregroundPid) == 0) return false; return (foregroundPid == pid); }
这将适用于在某些级别使用核心Win32库的任何应用程序 – 这将包括Windows窗体,WPF,原生Win32应用程序等。注意,这只适用于在调用桌面和会话上运行的应用程序 – 您可以“例如,使用它来确定另一个用户的应用程序是否在前台。