Как вы получаете идентификатор процесса потока? - PullRequest
0 голосов
/ 09 мая 2011

Я хочу получить идентификатор потока Chrome. Я не хочу получить идентификатор потока моего окна. Я хочу получить идентификатор потока других окон. Какую функцию я должен использовать? и идентификатор процессора совпадает с идентификатором потока?

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Вы не указываете платформу в своем вопросе.Предполагая, что это Windows, вы можете начать свое исследование здесь: http://msdn.microsoft.com/en-us/library/ms684847(v=VS.85).aspx

Короче говоря, вам нужно перечислить процессы и потоки (или, альтернативно, перечислить окна на рабочем столе), а затем вы можете открыть дескрипторысоответствующие ресурсы.

0 голосов
/ 10 мая 2011

Вы можете получить идентификатор потока окна, используя функцию GetWindowThreadProcessId.Он принимает два аргумента, первый - дескриптор окна, а второй - идентификатор процесса.Функция возвращает идентификатор потока.Посмотрите на здесь для получения дополнительной информации.Вы можете получить дескриптор окна с помощью функции WindowFromPoint .(Я предполагаю, что вы работаете на машине с Windows).

Я думаю, что под «процессором» вы подразумеваете процесс.Идентификатор процесса не совпадает с идентификатором потока.Каждый процесс может иметь много потоков внутри каждого, имеющих свои собственные идентификаторы.Посылая параметр во второй аргумент функции GetWindowThreadProcessId, вы можете получить идентификатор процесса и его информацию.

В следующем коде win_thread_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

...