Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.041 c
3-1152194411
freak
2006-07-06 18:00
2006.09.10
Помогите определить связи


15-1155621138
Sam Stone
2006-08-15 09:52
2006.09.10
Спиральные галактики


2-1156237255
GTAID
2006-08-22 13:00
2006.09.10
вызов программы через нажатие ctrl+shift+G


15-1155735870
StriderMan
2006-08-16 17:44
2006.09.10
Windows Vista


1-1154094328
Piter
2006-07-28 17:45
2006.09.10
Как скопировать компонент в run-time?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский