Как мне предоставить функцию "Найти окно процесса" в Process Explorer (sysinternals)
Я разрабатываю приложение для отладки. Я хочу, чтобы пользователь мог выбирать процесс для отладки с помощью мыши. Process Explorer отлично справляется с этой задачей с помощью функции "Найти процесс в окне". Что я не могу понять, так это как это сделать? Кто-нибудь знает интерфейс Windows, который обеспечивает эту функциональность?
Спасибо грант
2 ответа
Я не пробовал это, но оно должно работать: использовать WindowFromPoint
чтобы получить дескриптор окна, затем используйте GetWindowThreadProcessId
чтобы получить идентификатор процесса, который создал окно.
В качестве альтернативы, вы можете использовать EnumWindows
перечислить все окна верхнего уровня на экране, отфильтровать их по некоторым критериям (например, по положению) и затем использовать GetWindowThreadProcessId
чтобы получить идентификаторы процесса.
Если я вас правильно понимаю, вы хотите перечислить все Windows и выполнить какое-то действие, когда будет найдено нужное целевое окно. Вы можете сделать это, перечислив все текущие окна и затем выполнив некоторое действие, когда пользователь находится над рассматриваемым окном. Вам нужно будет связать этот дескриптор окна с процессом.
Это непростая задача, так как требует прохождения большого количества обручей, но это возможно, просто нужно собрать все кусочки вместе.