Получить дескрипторы для всех окон процесса - PullRequest
8 голосов
/ 10 февраля 2010

В C # с использованием класса процесса я могу получить дескриптор главного окна процесса, но мне нужен доступ к окну, которое не является основным окном его процесса. Как я могу получить дескриптор для всех окон процесса?

Ответы [ 3 ]

5 голосов
/ 10 февраля 2010

Функция EnumChildWindows может вам помочь. Дочерние окна также могут иметь детей и т. Д.

Существует также GetWindow и EnumThreadWindows

3 голосов
/ 10 февраля 2010

Вы можете P / Invoke GetWindowThreadProcessId(), чтобы получить идентификатор потока для потока пользовательского интерфейса, которому принадлежит главное окно. Оттуда вы можете найти любое другое окно верхнего уровня, принадлежащее этому потоку с EnumThreadWindows(). Любые дочерние окна (элементы управления), принадлежащие окну верхнего уровня, можно найти с помощью EnumChildWindows(). Посетите pinvoke.net для получения необходимых деклараций P / Invoke.

3 голосов
/ 10 февраля 2010

P / Вызов функции EnumThreadWindows пользователя32, обратный вызов, который вы предоставите, получит дескрипторы окон для данного потока.Process.GetCurrentProcess().Threads должен вернуть вам все соответствующие темы для вызова EnumThreadWindows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...