如何知道哪个进程正在使用键盘在 Windows 10 中输入?

Posted

技术标签:

【中文标题】如何知道哪个进程正在使用键盘在 Windows 10 中输入?【英文标题】:How can I know which process is using the keyboard to input in windows 10? 【发布时间】:2021-11-02 08:32:15 【问题描述】:

在 windows 10 中如何知道哪个进程正在使用键盘输入?

【问题讨论】:

请参阅 键盘焦点和激活 docs.microsoft.com/en-us/windows/win32/inputdev/… 另外,到目前为止您尝试/研究了什么,请阅读 How to Ask。 【参考方案1】:

要获得前台窗口(用户当前正在工作的窗口,操作系统将所有键盘输入发送到该窗口)的窗口句柄,您可以使用函数GetForegroundWindow

要获取创建该窗口的线程的进程ID,可以使用函数GetWindowThreadProcessId

以下控制台程序将每隔 5 秒打印一次前台窗口句柄的值,以及创建该窗口的线程和进程 ID。

#include <windows.h>
#include <stdio.h>

int main( void )

    HWND hWnd;
    DWORD dwTID, dwPID;

    while ( 1 )
    
        hWnd = GetForegroundWindow();
        dwTID = GetWindowThreadProcessId( hWnd, &dwPID );

        printf(
            "Handle of current foreground window: %p\n"
            "That window was created by:\n"
            "Thread ID: %u\n"
            "Process ID: %u\n",
            hWnd, dwTID, dwPID 
        );
        fflush( stdout );

        Sleep( 5000 );

        printf( "\n" );
    

【讨论】:

以上是关于如何知道哪个进程正在使用键盘在 Windows 10 中输入?的主要内容,如果未能解决你的问题,请参考以下文章

我用c#wpf做的 菜单,Command和键盘事件,出现这个错误,有没有大神知道这个错误怎样解

windows中查看文件正在被哪个进程使用

如何了解哪个进程删除了硬盘上的文件

Windows 中的 Qt Creator - 我如何知道正在使用哪个编译器?

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?