C++ 如何找到具有当前焦点的程序?

C++ 如何找到具有当前焦点的程序?,c++,windows,focus,C++,Windows,Focus,我如何知道哪个流程具有当前焦点 编辑:Windows操作系统,从XP到7的任何位置。第一步是winapi函数枚举进程(可能还有OpenProcess)您可以使用它来获取正在运行的进程列表 检索句柄后,请检查,可能有什么可以帮助您。调用以获取聚焦窗口的句柄,然后调用以获取创建该窗口的进程的ID。如何使用该ID取决于您。您试图解决的问题是什么,您认为使用当前焦点获取程序会有帮助吗?@Raymond Chen,我想创建一个原型系统,记录当前打开的窗口,从中确定实际运行的程序(即Spotify)一旦知道

我如何知道哪个流程具有当前焦点


编辑:Windows操作系统,从XP到7的任何位置。第一步是winapi函数枚举进程(可能还有OpenProcess)

您可以使用它来获取正在运行的进程列表


检索句柄后,请检查,可能有什么可以帮助您。

调用以获取聚焦窗口的句柄,然后调用以获取创建该窗口的进程的ID。如何使用该ID取决于您。

您试图解决的问题是什么,您认为使用当前焦点获取程序会有帮助吗?@Raymond Chen,我想创建一个原型系统,记录当前打开的窗口,从中确定实际运行的程序(即Spotify)一旦知道这些信息,就捕捉/记录键盘输入并执行操作(即,记录搜索到的歌曲)。谢谢你的编辑顺便说一句。所以你想做一个键盘记录器,可以针对任何进程;-)在这种情况下,获取焦点窗口是错误的问题。不管输入目标是否为焦点,您确实希望记录输入。(由于异步输入,它可能无法聚焦。)但即使如此,您的日志记录级别也太低,因为您必须解码移位状态、IME、手写识别等。相反,请使用可访问性界面从输入框中获取文本。当然,请注意,每个目标应用程序都需要一个自定义版本,因为Spotify和iTunes有不同的输入模式。你说得对。这就是我想建议的API。。删除我的答案和+1