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

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

Дескрипторы иконок [D5, Win2k]


Настя ©   (2001-11-08 08:38:00) 

Как получить дескрипторы иконок в трее ? Помогите пожайлуста!


panov   (2001-11-09 09:33:00) [1]

>Настя (08.11.01 13:07)

>Тогда я столкнусь с двумя проблемами:
>1. Если моя программа вылетает, то часы не восстановяться.

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

Убей Explorer и увидишь то же самое - пропадают не только часы, но и, например, отображение текущей раскладки.

Решения этой проблемы нет.


Настя   (2001-11-09 07:00:00) [2]

Спасибо! Буду разбираться и пробовать.


Myppp   (2001-11-08 20:17:00) [3]

Хм..
во-первых часы.. это не иконка..
во-вторых... а не проще просто отрисовывать по DC систрея ???


Jurgen   (2001-11-08 14:46:00) [4]

Опять добавка: если что - мыль


Jurgen   (2001-11-08 14:45:00) [5]

Добавка:
NIM_MODIFY используется для обновления иконки, уже загруженной в трэй (если вдруг сменился хинт или сама иконка)


Jurgen   (2001-11-08 14:43:00) [6]

Снова привет. Лови пример определения child"ов TrayWnd

function lpEnumFunc(h: hWnd; lParam: LParam): Bool; stdcall;
type
PhWnd = ^hWnd;
var
Buf: array[0..50] of Char;
begin
Result := True;
if (GetClassName(h, Buf, 50) <> 0) then
if (lStrCmp(Buf, "TrayNotifyWnd") = 0) then begin
PhWnd(lParam)^ := h;
Result := False;
end;
end;

procedure ...;
var
hShell, hTray: HWnd;
lpRect: TRect;
begin
hShell := FindWindow("Shell_TrayWnd", "");
EnumChildWindows(hShell, @lpEnumFunc, LongInt(@hTray));
...
PostMessage(Handle, WM_NULL, 0, 0);
end;

Удачи. Да прибудет с тобой F1.

З.Ы. Программа, кусочек которой висит выше, успешно использовалась для отлавливания нажатия мыши на иконку Internat.exe (переключатель раскладки клавиатуры)


Voron   (2001-11-08 14:18:00) [7]

Если че нить придумаю то напишу


Настя   (2001-11-08 13:07:00) [8]

Тогда я столкнусь с двумя проблемами:
1. Если моя программа вылетает, то часы не восстановяться.
2. Нужно запихать иконку в САМЫЙ правый конец трея. Как ?

По моему лучше использовать параметр NIM_MODIFY в Shell_NotifyIcon(). Это самый правильный способ. Но для этого надо знать что именно MODIFY. Нигде не могу найти. Два дня уже веду поиски :(


Voron   (2001-11-08 12:58:00) [9]

Отключи в винде параметр Отображать часы в Systray (как программно не знаю но уверен сделать это можно) и помещай вместо них что хочешь


Jurgen   (2001-11-08 12:47:00) [10]

Не надо...


Настя   (2001-11-08 12:20:00) [11]

Заменить иконку системных часов своей.


Voron   (2001-11-08 12:04:00) [12]

По моему у каждой отдельно взятой иконки вообще дескриптора нет.
Ими всеми вместе Systray заведует которые в памяти сидит.
А что конкретно сделать надо?


Настя   (2001-11-08 10:49:00) [13]

Уже читала! Там про это нету.


Jul   (2001-11-08 10:32:00) [14]

может поможет ...
http://www.codenet.ru/progr/delphi/stray/


Наверх

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