Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить ссылку на иконку окна [D5, Win95/98]


Gerda ©   (2003-11-12 22:26:00) 

Здравствуйте Мастера.
Меня интересует такой вопрос: есть окно, и есть(или нет) в его левом верхнем углу иконка, мне нужно получить ссылку на нее.
Заранне благодарен.


DVM   (2003-11-12 23:06:00) [1]

function GetIconFromWindow(hWnd:HWND; bBigIcon:boolean):HICON;
var
BigOrSmall,BigOrSmall2:integer;
hIcon:THandle;
begin
hIcon:=0;
if bBigIcon then
begin
BigOrSmall:=ICON_BIG;
BigOrSmall2:=GCL_HICON;
end
else
begin
BigOrSmall:=ICON_SMALL;
BigOrSmall2:=GCL_HICONSM;
end;
SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 0, SMTO_ABORTIFHUNG, 1000, HIcon);
if hIcon=0 then hIcon := GetClassLong(hWnd, BigOrSmall2);
if hIcon=0 then SendMessageTimeout(hWnd, WM_GETICON, BigOrSmall, 1,
SMTO_ABORTIFHUNG, 1000, hIcon);
if hIcon=0 then hIcon := GetClassLong(hWnd, BigOrSmall2);
if hIcon=0 then SendMessageTimeout(hWnd, WM_QUERYDRAGICON, BigOrSmall,
0, SMTO_ABORTIFHUNG, 1000, hIcon);
result:=hIcon;
end;

Можно так. Правда функция несовершенна. Под XP иконки некоторых окон она не достанет. Но этот недостаток легко устраним, если почитать MSDN.


Наверх

Титульная страница Поиск, карта сайта Написать письмо