Как предоставить функцию «Процесс поиска окна» в процессе Explorer (Sysinternals)
-
01-10-2019 - |
Вопрос
Я разрабатываю приложение для целей отладки. Я хочу, чтобы пользователь мог выбрать процесс для отладки с помощью мыши. Процесс Explorer делает отличную работу с помощью функции «Процесс поиска окна». Что я не могу понять, это то, как это это делает? Кто-нибудь знает API окна, который предоставляет эту функциональность?
Спасибо, грант
Решение
Я не пробовал это, но он должен работать: использовать WindowFromPoint
Чтобы получить ручку окна, затем используйте GetWindowThreadProcessId
Чтобы получить идентификатор процесса, созданного окна.
В качестве альтернативы, вы могли бы использовать EnumWindows
Чтобы перечислить все окна верхнего уровня на экране, фильтруйте их по некоторым критериям (например, положение), а затем используйте GetWindowThreadProcessId
Чтобы получить идентификаторы процесса.
Другие советы
Если я вас правильно понимаю, вы хотите перечислить все окна и выполнить некоторые действия, когда найден некоторые действия целевого окна. Вы можете сделать это, перечисляя все текущие окна А затем выполнение некоторого действия, когда пользователь по поводу осмотра окна. Вам придется связать эту оконную ручку с обработать.
Это не простая задача, поскольку она требует прохождения много обручей, но это возможно, просто придется собрать все куски вместе.