Есть ли способ, или как «принятый» способ заставить все окна работать под текущим процессом? - PullRequest
1 голос
/ 31 декабря 2010

Из адресного пространства процесса другого приложения, как бы вы получили дескриптор для каждого окна, которое оно использует / отображает?

Я знаю, что вы можете получить снимок всех текущих потоков, запущенных в процессе http://msdn.microsoft.com/en-us/library/ms686701(v=vs.85).aspx, но мне интересно, есть ли способ, используя THREAD ID, чтобы затем получить значение hwnd, которое вы можете проверить используя IsWindow (hwnd) или логически, если вы можете получить hwnd, разве вы не знаете, что у вас уже есть окно значений? Но мне интересно, будет ли это работать или это действительно разумный подход?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 31 декабря 2010

Вы можете использовать EnumThreadWindows для перечисления всех окон, не относящихся к детям, связанных с потоком, а затем использовать EnumChildWindows , чтобы получить все их дочерние окна.

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

1 голос
/ 31 декабря 2010

Обратите внимание, что эта информация очень динамическая. Окна приходят и уходят все время. Окна верхнего уровня часто будут самыми постоянными, но даже они могут исчезнуть сразу после того, как вы их «найдете», или новые появятся сразу после их поиска.

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