Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

нельзя выполнить ShutDown :(   Найти похожие ветки 

 
Novichok   (2004-02-28 23:18) [0]

Когда запущена моя программа, нельзя выполнить ShutDown или Restart машины, если прогу выключить то все ok, система спокойно выключается. Программа небольшой чат с сокетами. Стал обрабатывать событие OnCloseQuery :

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 try // Если не ставить try вылетает ошибка
   Form1.Close;
 except
 end;
end;


Если делать так, то прога закрывается, но завершение работы дальше не продолжается.
Уважаемые мастера что делать ?


 
МАКСЮХА ©   (2004-02-29 10:52) [1]

Я так и думал, что чат:)
Была та - же проблема... попробуй сделать перед выходом глубокий диссконнескт...


 
DDA ©   (2004-02-29 11:53) [2]

Ну наверное раз программа дошла уже до процедуры CloseQuery,
то программы уже закрывается и не стоит закрывать ее ещё раз (Form1.Close)


 
Pashka R. ©   (2004-02-29 12:32) [3]

тебе надо обрабатывать сообщение WM_ENDSESSION и по нему закрывать свою прогу

---
Best regards, Pashka R. <pashka@land.ru>

 ICQ:  860730


 
Pashka R. ©   (2004-02-29 12:37) [4]

сорри, нужно обрабатывать WM_QUERYENDSESSION :)

---
Best regards, Pashka R. <pashka@land.ru>

ICQ:  860730


 
Novichok   (2004-02-29 12:48) [5]

DDA
> уже закрывается и не стоит закрывать ее ещё раз (Form1.Close)
Если не делать Form1.close; то прога вообще не выключается, не после первой не после второй попытки

> МАКСЮХА >попробуй сделать перед выходом глубокий диссконнескт...
ClientSocket1.Destroy ? ClientSocket1.active:=false (так я дклал, не помогло)
Pashka R.
> нужно обрабатывать WM_QUERYENDSESSION :)
Разве это не одно и то же что OnCloseQuery ???


 
Lexer ©   (2004-02-29 12:50) [6]


> DDA ©   (29.02.04 11:53) [2]
> Ну наверное раз программа дошла уже до процедуры CloseQuery,
> то программы уже закрывается и не стоит закрывать ее ещё
> раз (Form1.Close)


ага, надо просто сделать проверку и установить CanClose в True


 
JSilver   (2004-03-03 20:33) [7]

Короче, если хочешь все сам узнать ищи в FAQ или книгах по Делфи тему про завершение винды и как правильно на это реагировать.
   Если приложение активно и вы пытаетесь завершить работу Windows (Shut Down), происходят следующие события (с соблюдением последовательности):
1.FormCloseQuery
2.FormDestroy
Мы видим, что метод FormClose в этом случае не вызывается.

private
{--------------------------------------------------------}
{ Объявляем свой обработчик сообщения WM_QUERYENDSESSION }
{--------------------------------------------------------}
procedure WMQueryEndSession(
var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;

procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin

inherited;   { сначала сообщание должен обработать наследуемый метод }
{------------------------------------------------------------}
{ в этой точке вы также можете сообщить Windows о неготовности       }
{ приложения завершить работу...                                     }
{ Message.Result:=0;                                                 }
{--------------------------------------или----------------------}
{ вызов процедуры освобождения ресурсов, предусмотренной в FormClose }
{-------------------------------------------------------------}
end;



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

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1081452005
Yong
2004-04-08 23:20
2004.04.25
Как уменьшить размер ехе-шника без визуальных компонентов


4-1077785537
@ac
2004-02-26 11:52
2004.04.25
Как закрыть какое-либо стороннее приложение, зная его имя и папку


8-1073496651
The xXx
2004-01-07 20:30
2004.04.25
Media Player


8-1074069795
Vladgul
2004-01-14 11:43
2004.04.25
Помогите. Видео проигрывается без звука :-(


3-1080737687
Xim
2004-03-31 16:54
2004.04.25
Хранимая процедура