Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Трабл: Программа не дает выключить комп   Найти похожие ветки 

 
freeborn   (2003-08-24 22:00) [0]

Здравствуйте !!

Написал я программу, которая сидит в трее. При попытке вырубить комп, он не вырубается. Когда закрываешь прогу, только тогда вырубается. Помогите, профи !!

Александр aka freeborn.


 
Sheng   (2003-08-24 22:14) [1]

Попробуй отловить WM_QUERYENDSESSION, на нём повесь пранудительное закрытие программы.


 
freeborn   (2003-08-24 22:17) [2]

уже пробовал. не помогает. при этом в на close и destroy прога ничего не делает. правда есть таймер (всл), который проверяет мейл через поп3. вот и вся кухня. помогите плз. спасибо !!


 
Guerrillero   (2003-08-24 22:23) [3]

или WM_ENDSESSION


 
sniknik   (2003-08-24 22:27) [4]

Sheng © (24.08.03 22:14) [1]
Попробуй отловить WM_QUERYENDSESSION, на нём повесь принудительное закрытие программы.
Guerrillero © (24.08.03 22:23) [3]
или WM_ENDSESSION

от себя, а лутше не или а и.


 
Dimka Maslov   (2003-08-25 09:17) [5]

Такое иногда бывает, когда есть соединение через сеть. Если сокет открыт, то система сосздаёт поток, который и обрабатывает сообщение WM_QUERYENDSESSION не давая системе выключиться или перезагрузиться. Лечение проблемы - принудительное закрытие сокета при получении WM_QUERYENDSESSION. Причём закрывать сокет лучше в Application.OnMessage по идее он должен получить зто сообщение в первую очередь.


 
Zergling   (2003-08-25 11:03) [6]

У меня такая же грабля. У меня закрывается при условии: программу свернутую в трее вызываю (разворачиваю), а затем опять сворачиваю в трей. После этого Alt+F4 и все закрывается. Если этих действий не проделать, то прга не сворачивается. Программа работает с сетью, но сокетов я не использую. В чем может быть проблема?

freeborn ты примерчик случаем не из книги "Дельфи и технология COM" брал. У меня из этой книги.


 
Карелин Артем   (2003-08-25 14:04) [7]

Этим прославились компоненты от NetMasters. В дельфи имеют прификс NM...


 
Fay   (2003-08-25 20:04) [8]

OnCloseQuery водится?


 
Zergling   (2003-08-27 06:12) [9]

Извеняйте за такое опоздание. Забыл про эту веточку!

Fay (25.08.03 20:04) [8]

В OnCloseQuery у меня MessageDlg для поддверждения закрытия программы. Взависимости ответа определяется закрыть приложение или нет.


 
Alex No   (2003-08-27 09:17) [10]

to: freeborn
Скорее всего у тебя NMPOP3 используется. Выкинь его и возьми с вкладки Indy Clients.

А сам обработчик примерно так можно сделать:


protected
procedure IsWindowsShutDown(Var Msg:TMessage); message WM_ENDSESSION;

procedure TMain_Form.MyExitProc;
var ini : TIniFile;
begin
ini:=TIniFile.Create(IniName);
ini.WriteInteger("Form", "Left", Left);
ini.WriteInteger("Form", "Top", Top);
ini.WriteInteger("Form", "Height", Height);
ini.WriteInteger("Form", "Width", Width);
ini.Free;

try
if MyPOP.Connected then
MyPOP.Disconnect;
except
end;
end;

procedure TMain_Form.IsWindowsShutDown(Var Msg:TMessage);
Begin
WriteLog(true, true, "WINDOWS", "ОС Windows завершила работу");
Msg.Result:=10; // типа > 0
Close;
End;

procedure TMain_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyExitProc;
end;


В этом случает при пользовательском закритии проги, либо когда винда завершается выполняются одни и те же действия "корректного" завершения работы проги.
Примерно так. Ну у меня так ;)


 
Verg   (2003-08-27 11:26) [11]

Я делаю так: В главной форме есть поле ShutDown :boolean;
В обработчике WM_QUERYENDSESSION устанавливаю эту переменную в true и вызываю inherited
А в OnCloseQuery проеверяю:
if not ShutDown then
begin
// тут запросы юзеру типа "вы уверены?"
Если что - CanClose:=false;
end;
if CanClose then
begin
//закрываю БД, освобождаю ресурсы и проч.
end;



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.032 c
3-40787
grifon-nn
2003-10-21 22:27
2003.11.13
Индексы Paradox


7-42202
Alex134
2003-08-25 16:26
2003.11.13
опять про модем


1-41653
Endi
2003-10-25 16:52
2003.11.13
Как считать строки, прерывающиеся 0 байтом.


3-40910
Bonni
2003-10-20 12:40
2003.11.13
что значит


14-42106
Ihor Osov'yak
2003-10-23 15:53
2003.11.13
Как вам такова версия о причине событий вокруг Тузлы?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский