Как предоставить функцию «Найти окно процесса» в Process Explorer (sysinternals)

Я разрабатываю приложение для целей отладки. Я хочу, чтобы пользователь мог выбрать процесс для отладки с помощью мыши. Process Explorer отлично справляется с этой задачей благодаря функции «Найти процесс окна». Что-то я не могу понять, как это делается? Кто-нибудь знает API Windows, который обеспечивает эту функциональность?

Спасибо, Грант


person GrantJ    schedule 28.08.2010    source источник


Ответы (2)


Я не пробовал это, но это должно сработать: используйте WindowFromPoint, чтобы получить дескриптор окна, затем используйте GetWindowThreadProcessId, чтобы получить идентификатор процесса, создавшего окно.

В качестве альтернативы вы можете использовать EnumWindows для перечисления всех окон верхнего уровня на экране, отфильтровать их по некоторым критериям (например, позиции), а затем использовать GetWindowThreadProcessId для получения идентификаторов процессов.

person Niki    schedule 28.08.2010

Если я вас правильно понимаю, вы хотите перечислить все окна и выполнить какое-то действие, когда будет найдено целевое окно. Это можно сделать, перечислив все текущие окна, а затем выполнять какое-то действие, когда пользователь находится над рассматриваемым окном. Вам нужно будет связать этот дескриптор окна с процесс.

Это непростая задача, поскольку она требует прохождения множества обручей, но это возможно, просто нужно собрать все кусочки вместе.

person linuxuser27    schedule 28.08.2010