Получить дескрипторы всех окон на панели задач - PullRequest
2 голосов
/ 08 декабря 2010

Я довольно новичок в Windows API и пытаюсь найти дескрипторы всех окон, которые появляются на панели задач.

Пока мне удалось:

  • Получить дескрипторы всех окон
  • Получить заголовок окна
  • Проверить, видно ли окно
  • Проверить, существует ли окно
  • Свернуть окно
  • Получить дочерние окна окна
  • Получить окно рабочего стола

Я попытался получить все дочерние окна окна рабочего стола, что даетмне почти 900 оконных ручек!Поэтому я попытался отфильтровать их, получая только видимые окна и только окна, заголовок которых длиннее 0 символов, но я все еще далеко - с 68 окнами ??

Так может ли какой-нибудь эксперт Win API просветитьмне, как вы это делаете, пожалуйста, :-), а также, возможно, объясните, почему существует так много окон?

Редактировать:

private static bool HasAppWindowStyle(IntPtr handle)
{
    return (GetWindowLong(handle, GWL_EXSTYLE) & WS_EX_APPWINDOW) != 0;
}

Ответы [ 3 ]

2 голосов
/ 08 декабря 2010

Вы видели FindWindowEx образец?Также вы можете отфильтровать их, чтобы на них был текст, я думаю, что вы видите окна, это элементы Desctop (я не уверен), но удалите некоторые элементы с рабочего стола и посмотрите изменения.

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

Точный алгоритм не задокументирован, я придумал какой-то псевдокод в этот ответ , который хорошо работает.

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

Окна верхнего уровня, которые вы найдете в EnumWindows и имеют кнопки панели задач, будут иметь включенные флаги стиля WS_VISIBLE и WS_EX_APPWINDOW.

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