如何确定进程是否是当前活动/前台应用程序
我希望能够查询某个函数并给它一个 processID 或 processName - 然后无论该进程是否在前台,它都应该返回 true
或 false
。
因此,即对 Firefox 的查询将返回 true
(因为现在我在 FireFox 中输入此内容),而其他所有内容都应返回 false
。
对于每种类型的应用程序(.net、java/swing、纯 c++/win32-ui)都可能吗?
- 这个问题仅适用于 Windows。
I'd like to be able to query some function and give it a processID or processName - It then should return true
or false
on wether that process is in the foreground or not.
So i.e. the query for Firefox would return true
(because right now I'm in FireFox, typing this) and everything else should return false
.
Is that even possible for every type of application (.net, java/swing, pure c++/win32-ui)?
- This question is for Windows only.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
GetForegroundWindow 和 GetWindowThreadProcessId 应该可以让您获取此信息。
即,如果您知道 pid,只需根据如下函数检查它:
这适用于在某种程度上使用核心 Win32 库的任何应用程序 - 这将包括 Windows 窗体、WPF、本机 Win32 应用程序等。请注意这一点仅适用于在调用桌面和会话上运行的应用程序 - 例如,您无法使用它来确定另一个用户的应用程序是否位于前台。
GetForegroundWindow and GetWindowThreadProcessId should let you get this information.
i.e., if you know the pid just check it against a function like this:
This will work for any application that uses the core Win32 library at some level - this'll include Windows Forms, WPF, native Win32 applications, etc. Note this'll only work for applications running on the calling desktop and session - you can't use this to determine if another user's application is in the foreground, for instance.