![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дескрипторы иконок [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/