gpt4 book ai didi

c++ - 在 C++ WIN32 中识别后台进程并将其置于前台

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:20 27 4
gpt4 key购买 nike

谁能告诉我如何识别特定的后台进程(即,已经在运行的应用程序)并将其带到前台?例如,如果一个记事本应用程序在后台运行,当我运行我的 WIN32 应用程序时,它应该识别记事本应用程序并且记事本应该弹出或进入前台。

我尝试了 SwitchToThisWindow() 函数,但它的工作方式类似于 Alt+tab。它不会识别后台进程。

请给我建议这方面的演练指南..

谢谢你..

最佳答案

不清楚您所说的“后台进程”是什么意思,但这里有一些想法:

使用EnumWindows为您提供桌面上的所有 顶级 HWND。这将包括一堆你不想要的东西,你必须过滤掉。建议您使用 Spy++,看看 HWND 树是什么样子的,以及您会在这里找到什么样的 HWND:

从这个集合中,您需要过滤掉或忽略不可见的 HWND(使用 IsWindowVisible 或检查 WS_VISIBLE 样式)。

同时过滤掉设置了 WS_POPUP 的窗口 - 这些窗口是工具提示、菜单弹出窗口、 float 工具栏等。

要过滤掉当前事件的窗口,(如果您还不知道)使用 GetGUIThreadInfo 和 idThread=0; GUIHREADINFO.hwndActive 返回事件窗口,因此任何不是它的顶级 HWND 都是非事件窗口。

如果您专门寻找最小化的窗口,您可以使用 IsIconic(hwnd) 检测这些窗口.

最后,当您找到一个您认为是“背景”的窗口时,您可以使用 GetWindowText 获取标题,或使用 GetWindowThreadProcessId 获取进程 ID。

关于c++ - 在 C++ WIN32 中识别后台进程并将其置于前台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11009009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com