有没有办法检查哪个进程正在接收用户输入?

时间:2013-06-26 14:11:45

标签: c++ multithreading winapi process

有没有办法从所有正在运行的进程的完整列表中检查哪个进程正在接收用户输入?例如:

  PROCESSENTRY32 procentry;
HANDLE hproc;
BOOL retval, ProcFound = false;

hproc = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //GetsSnapshotOfAllProcesses
if(hproc == INVALID_HANDLE_VALUE)
{ // If Couldnt get snapshot 
   MessageBox(NULL, "Unable To Get Snapshot", "LoaderError", MB_OK);
   return false;
}
procentry.dwSize = sizeof(PROCESSENTRY32); // Initialize
retval = Process32First(hproc, &procentry); //Copies Snapshot procentry

while(retval)
{
    **if(UserInput == TRUE))**
    {
    return procentry.th32ProcessID; //
    }
    retval = Process32Next(hproc, &procentry); // 
}
return 0;

}

是否有一个函数可以让我检查哪个进程正在接收用户输入?

if(UserInput == TRUE))

另外,有没有办法将流程转换为字符串?

1 个答案:

答案 0 :(得分:2)

GetForegroundWindow()GetWindowThreadProcessId()是要走的路:

DWORD dwProcessID = 0;
HWND hFGWnd = GetForegroundWindow();
if (hFGWnd != NULL)
    GetWindowThreadProcessId(hFGWnd, &dwProcessID);
return dwProcessID;