你如何获得线程的进程ID?

时间:2011-05-09 19:48:48

标签: c++ process thread-safety

我想获得chrome的线程ID。我不想得到我的窗口的线程ID。我想获得其他窗口的线程ID。我应该使用什么功能?并且处理器ID与线程ID相同吗?

2 个答案:

答案 0 :(得分:0)

您可以使用GetWindowThreadProcessId函数获取窗口的线程ID。它需要两个参数,第一个是窗口的句柄,第二个是进程ID。该函数返回线程ID。有关详细信息,请查看here。您可以使用WindowFromPoint函数获取窗口的句柄。 (我假设你在Windows机器上)。

我认为'处理器',你的意思是过程。进程ID与线程ID不同。每个进程内部可能有许多线程,每个线程都有自己的ID。通过向GetWindowThreadProcessId函数的第二个参数发送参数,您可以获取进程ID及其信息。

在下面的代码中,win_thread_id将获取执行时光标所在窗口的线程ID:

HWND handle;
POINT *point = new POINT();
GetCursorPos(point);
handle = WindowFromPoint(*point);

//Get the thread ID for the window from the handle
DWORD win_thread_id;
win_thread_id = GetWindowThreadProcessId(handle, NULL);

注意:我没有测试代码,顺便提一下你应该包含windows.h

答案 1 :(得分:0)

您没有在问题中指定平台。假设这是Windows,您可以在此处开始您的研究:http://msdn.microsoft.com/en-us/library/ms684847(v=VS.85).aspx

简而言之,您需要枚举进程和线程(或者,在桌面上枚举窗口),然后您可以打开相应资源的句柄。