加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何确定进程是否是当前活动/前台应用程序

发布时间:2020-12-14 04:26:54 所属栏目:Windows 来源:网络整理
导读:我希望能够查询一些函数并给它一个processID或processName – 然后它应该返回true或false,因为该进程是否在前台. 因此,对Firefox的查询将返回true(因为现在我在FireFox中,键入此内容),其他所有内容都应返回false. 对于每种类型的应用程序(.net,java / swing,
我希望能够查询一些函数并给它一个processID或processName – 然后它应该返回true或false,因为该进程是否在前台.

因此,对Firefox的查询将返回true(因为现在我在FireFox中,键入此内容),其他所有内容都应返回false.

对于每种类型的应用程序(.net,java / swing,纯c / win32-ui),这是否可能?

>此问题仅适用于Windows.

解决方法

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应用程序等.请注意,这只适用于在调用桌面和会话上运行的应用程序 – 您可以’例如,使用它来确定另一个用户的应用程序是否在前台.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读