Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизНе выключается виндовс с запущеной программой Найти похожие ветки
← →
KyRo (2006-08-17 11:07) [0]Добрый день.
У меня с запущеной программой отказывается выключатся,перезагружатся виндовс пока ее не закроеш руками.
Путем исключений нашол что перестает она автоматически закрыватся после того как я прячу ее в трей (Если не прятать ее все нормально) , при этом не зависимо висит она в трее или уже извлек ее из него.
Подскажите из за чего это может быть
Вот код как я прячу ее в трей//=====================================================
//Процедура прячущая программу в Tray
Function Ttray.Active(Visible:boolean):boolean;
begin
With MyNotifyIconData do
begin
CbSize:=SizeOf(MyNotifyIconData);
Wnd := AllocateHWnd(TrayMsgHandler);
Uid:=0;
uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage:=WM_NOTIFYICON;
if Assigned(FImage)
then HIcon:=FImage.Icon.Handle
else HIcon:=LoadIcon(Hinstance,"MAINICON");
lstrcpyn(SzTip,PChar(FHint),length(FHint)+1);
end;
Result:=Shell_NotifyIcon(NIM_ADD,@MyNotifyIconData);
if (result=True)and(Visible<>False) then
(Owner as TWinControl).visible:=False;
Active:=Result;
end;
//======================================================
//Процедура извлекающая программу из Tray
Function Ttray.DeActive;
begin
Result:=Shell_NotifyIcon(NIM_DELETE,@MyNotifyIconData);
if Result then
(Owner as TWinControl).visible:=True;
DeActive:=Result;
end;
← →
Ketmar © (2006-08-17 11:08) [1]проблема не здесь.
← →
KyRo (2006-08-17 11:15) [2]А мне кажетса что здесь.
Потому что я запускаю программу делаю все что надо (только не сворачиваю в трей) нажимаю логоф или перезагрузку все работает , а как только сверну в трей все прога отказывается давать перезагружать комп
← →
DprYg © (2006-08-17 11:53) [3]uses Ctrl + F1;
Note:Use the DeallocateHWnd procedure to free windows that are created using AllocateHWnd.
← →
Ketmar © (2006-08-17 11:55) [4]кстати, а зачем AllocateHWnd()? это код компонента, что ли? не проще ли сразу из главной формы работать со значком?
← →
Ketmar © (2006-08-17 11:55) [5]> [3] DprYg © (17.08.06 11:53)
да, не успел дописать. %-)
← →
KyRo (2006-08-17 12:04) [6]Да это кусок кода компоненты
← →
DprYg © (2006-08-17 12:12) [7]А зачем писать этот компонент, если их такого рода в инете уже море?
← →
Ketmar © (2006-08-17 12:12) [8]> [6] KyRo (17.08.06 12:04)
тогда не забывай DeallocateHWnd(). должно помочь. в моей компоненте всё работает. %-)
← →
Ketmar © (2006-08-17 12:13) [9]> [7] DprYg © (17.08.06 12:12)
ну, может, просто для общего развития? или там какая-то эксклюзивная фича есть...
← →
KyRo (2006-08-17 12:16) [10]
> > [6] KyRo (17.08.06 12:04)
> тогда не забывай DeallocateHWnd(). должно помочь. в моей
> компоненте всё работает. %-)
А где его там использовать ?
← →
Сергей М. © (2006-08-17 12:18) [11]
> это кусок кода компоненты
>
Компонент этот наследник какого класса ?
← →
Ketmar © (2006-08-17 12:20) [12]> [10] KyRo (17.08.06 12:16)
подумать -- не судьба? если AllocateHWnd() -- в конструкторе, то DeallocateHWnd() -- в деструкторе, натурально.
← →
KyRo (2006-08-17 12:33) [13]
> Сергей М. © (17.08.06 12:18) [11]
>
> > это кусок кода компоненты
> >
>
>
> Компонент этот наследник какого класса ?
class(TComponent)ъ
А может у кого нить есть хорошоработающий компонент для работы с треем. Его поменять для меня не проблема .
Был бы очень признателен olegmail@bigmir.net
← →
Ketmar © (2006-08-17 12:39) [14]> [13] KyRo (17.08.06 12:33)
ушло, раз ты такой ленивый. %-)
← →
Сергей М. © (2006-08-17 12:41) [15]
> у кого нить есть хорошоработающий компонент для работы с
> треем
TCoolTray (или как-то на то похожее) в составе RxLib
> class(TComponent)
Тогда уж TWinControl следовало бы использовать в кач-ве предка.
← →
Ketmar © (2006-08-17 12:42) [16]> [15] Сергей М. © (17.08.06 12:41)
TRxTrayIcon. %-)
← →
KyRo (2006-08-17 13:13) [17]Спасибо вроде с новой компонентой проблема пропала
← →
Loginov Dmitry © (2006-08-17 15:55) [18]Отлавливай сообщение иконке WM_QUERYENDSESSION
← →
KyRo (2006-08-17 16:17) [19]
> Loginov Dmitry © (17.08.06 15:55) [18]
> Отлавливай сообщение иконке WM_QUERYENDSESSION
Такой вариант я уже пробовал . Да отлавливается программа нормально выключается но на этом перезагрузка винды прекращается как будто после попадения в трей винда теряет связь с программой и шлет сообщение уже новому для себя процесу.
Теперь тоже определил что проблема в компоненте работы с треем . С новой компонентой все ок !! Спасибо
> Ketmar ©
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.052 c