Как получить список или перечислить все дескрипторы неуправляемых окон с одинаковым классом и именем - PullRequest
2 голосов
/ 04 июня 2011

Используя pinvoke, я легко могу найти дескриптор окна с определенным классом и именем:

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hWnd = FindWindow("Foo Class", "Foo Window");

Приведенный выше код отлично работает, если есть только 0 или 1 подходящих окон.Однако неуправляемое приложение, с которым я работаю, охватывает несколько окон.Вызов FindWindow несколько раз возвращает один и тот же дескриптор окна каждый раз.

Что мне нужно сделать, чтобы получить ВСЕ окна с определенным классом и именем.

Я также приму ответ для альтернативного решения той же цели.(Я думаю, что, возможно, это можно сделать, найдя идентификатор процесса приложения, а затем получив все окна верхнего уровня и отфильтровав нужные).

1 Ответ

4 голосов
/ 04 июня 2011

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

См. http://www.pinvoke.net/default.aspx/user32/enumwindows.html для примера, который очень близок к тому, что вы спрашиваете.

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