Здравствуйте, Алексей!
> Добрый день.
> Как можно получить список окон, которые отображаются на таскбаре.
> Список процессов получить могу, но как из них выделить нужные не знаю.
> Пробовал сделать EnumChildWindows у таскбара, но такой фокус не
> прошел.
> Попутные вопросы, можно ли зная HWND окна узнать его класс и получить
> иконку этого окна.
> Всем заранее спасибо.
На панели задач отображаются окна, которые:
- являются видимыми
- не имеют родительского окна
Я тут покопался в исходниках taskmgr.exe, нашел вот что:
1. Отбрасывание ненужных окон в EnumWindowsProc:
if ((GetWindow(hwnd, GW_OWNER)) ||
(!IsWindowVisible(hwnd)))
{
//
// not a top level window, or not visible
//
return TRUE;
}
2. Получение иконки окна:
// Icons
#define ICON_FETCH_TIMEOUT 100
if (!fUpdateOnly)
{
m_hSmallIcon = NULL;
m_hLargeIcon = NULL;
if (!SendMessageTimeout(hwnd, WM_GETICON, 0, 0,
SMTO_BLOCK | SMTO_ABORTIFHUNG,
ICON_FETCH_TIMEOUT, (PULONG_PTR) &m_hSmallIcon)
|| NULL == m_hSmallIcon)
{
m_hSmallIcon = (HICON) GetClassLongPtr(hwnd, GCLP_HICONSM);
}
if (!SendMessageTimeout(hwnd, WM_GETICON, 1, 0,
SMTO_BLOCK | SMTO_ABORTIFHUNG,
ICON_FETCH_TIMEOUT, (PULONG_PTR) &m_hLargeIcon)
|| NULL == m_hLargeIcon)
{
m_hLargeIcon = (HICON) GetClassLongPtr(hwnd, GCLP_HICON);
}
}
С уважением, AleX
Номер выпуска : 4935
Возраст листа : 736 (дней)
Количество подписчиков : 535
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/443372
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru