C ++ Multi Monitor - Найти все видимые / открытые окна - PullRequest
3 голосов
/ 18 мая 2010

Я пытаюсь найти все окна ЛЮБОГО вида, которые открыты (и имеют «кнопку» на панели задач).

У меня нет проблем с поиском списков процессов / hWnd, а затем циклически их повторяю, но как мне определить, есть ли у процесса / hwnd открытое окно? (даже если свернуто).

Я пытался делать разные комбинации параметров окна (например, WS_POPUP и т. Д.), Но ни один из параметров (или комбинаций параметров), которые я мог бы найти, не дал бы мне все открытые окна без каких-либо ложных срабатываний. В качестве примера ложного срабатывания можно привести тот факт, что он дает мне два «окна» для Google Talk (хотя одно из них было открыто). Еще один ложный позитив - рассматривать меню «Пуск» как открытое окно.

Есть идеи? Решения? Я работал над этим некоторое время, и это сводило меня с ума.

Примечание: я делаю это для Windows 7 (на данный момент). Я не уверен, есть ли какая-то разница между тем, как вы будете делать это между XP и 7, но я подумал, что это может быть актуально.

1 Ответ

2 голосов
/ 19 мая 2010

Можете ли вы использовать EnumWindows ()? Это находит только окна верхнего уровня.

EnumWindows (MSDN)

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