Получить все дескрипторы окна для процесса

Используя Microsoft Spy ++, я вижу, что следующие окна, которые принадлежат процессу:

Дескрипторы окна процесса XYZ, отображаемые в древовидной форме точно так же, как Spy ++ дает мне:

A
  B
  C
     D
E
F
  G
  H
  I
  J
     K

Я могу получить процесс, и свойство MainWindowHandle указывает на дескриптор для окна F. Если я перечислю дочерние окна, используя, я могу получить список дескрипторов окна от G до K, но я не могу понять, как найти окно дескрипторы от A до D. Как я могу перечислить окна, которые не являются потомками дескриптора, указанного MainWindowHandle объекта Process?

Для перечисления я использую вызов win32:

[System.Runtime.InteropServices.DllImport(strUSER32DLL)]
            public static extern int EnumChildWindows(IntPtr hWnd, WindowCallBack pEnumWindowCallback, int iLParam);
8
задан Mark Elliot 30 June 2010 в 01:42
поделиться

2 ответа

Передайте IntPtr.Zero как hWnd , чтобы получить каждый дескриптор корневого окна в системе.

Затем вы можете проверить процесс владельца Windows, вызвав GetWindowThreadProcessId .

10
ответ дан 5 December 2019 в 06:22
поделиться

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

7
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: