识别后台进程并在 C++ WIN32 中置于前台
To identify the background process & bring to foreground in C++ WIN32
谁能告诉我如何识别特定的后台进程(即已经在运行的应用程序)并置于前台?例如,如果记事本应用程序在后台运行,则当我运行 WIN32 应用程序时,它应标识记事本应用程序,记事本应弹出或出现在前台。
我尝试了SwitchToThisWindow()函数,但它的工作方式类似于Alt + tab。它不会识别后台进程。
请建议我为此提供演练指南。
谢谢。。
目前尚不清楚"后台进程"是什么意思,但这里有一些想法:
使用 EnumWindows 获取桌面上的所有顶级 HWND。这将包括一堆你不想要的东西,你必须过滤掉。建议你玩 Spy++ 看看 HWND 树是什么样子的,以及你会在这里找到什么样的 HWND:
从这个集合中,您需要过滤掉或忽略不可见的 HWND(使用 IsWindowVisible 或检查WS_VISIBLE样式)。
还要过滤掉设置WS_POPUP窗口 - 这些窗口包括工具提示、菜单弹出窗口、浮动工具栏等。
要过滤掉当前活动的窗口,(如果您还不知道的话),请使用 GetGUIThreadInfo 和 idThread=0;GUIHREADINFO.hwndActive 返回活动窗口,因此任何不是它的顶级 HWND 都是非活动窗口。
如果您专门寻找最小化的窗口,则可以使用IsIconic(hwnd)检测这些窗口。
最后,当您找到一个您认为是"背景"的窗口时,您可以使用 GetWindowText 获取标题,或使用 GetWindowThreadProcessId 获取进程 ID。
但是有没有办法识别后台进程
这是一个Unix shell的概念,Windows没有。 现在,我有 10 个"后台"进程创建了不在前台的窗口,另外还有 50 个左右没有。 它们都不是后台过程,它们都是相同的背景。 通常单击窗口的任务栏按钮或按 Alt+Tab 将其中一个窗口切换到前台。 或者在代码中调用 SetForegroundWindow()。
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 将密钥发送到非前台的游戏窗口
- 鼠标输入和键输入有什么区别(在前台获取窗口)
- C++程序将进程置于前台(如果已在运行),否则创建一个新进程
- 全局挂钩 DLL 仅在 C# 主窗口处于活动状态/前台时调用 C# 回调方法
- 程序在前台工作,但不在后台使用nohup
- C++在杀死LogonUI.exe后将窗口置于前台
- 如何在OSX中执行时强制Qt应用程序成为活动/前台窗口
- 识别后台进程并在 C++ WIN32 中置于前台
- 在Linux中,如何在父进程死后将子进程留在前台
- 将后台进程发送到前台
- 暂停游戏时,进入前台,重启后
- 避免在前台项目中处理wheelEvent
- Qt 需要将 Win32 应用程序调用的 Qt 应用程序带到前台
- 将execv在前台或后台运行
- 如何将在后台运行的子进程移到前台