Текущий архив: 2004.08.22;
Скачать: CL | DM;
Вниз
"Правильное" завершение работы программы Найти похожие ветки
← →
denkop © (2004-08-03 02:05) [0]Как отличить закрытие формы пользователем от закрытия её виндой. WM_ENDSESSION не проходит, хотя может и проходит, но я не правильно его обрабатываю. Короче вот кусок кода:
public
procedure GetEndSession(var Msg:TMessage); message WM_ENDSESSION;
......
var
Trm:byte;
{в онкреат зануляю этот самый трм}
......
procedure TMainForm.GetEndSession(var Msg:TMessage);
begin
Trm:=1;
Application.Terminate;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if (Settings.MinToTray) and (Trm<>1) then
begin
MainForm.Visible:=False;
CanClose:=false;
end;
SettingsForm.WriteSettings;
end;
← →
denkop © (2004-08-03 02:08) [1]Ещё забыл. При первой попытке выклбчить компьютер завершается только моя программа. После второй попытки всё остальное. Замучался по два раза шырять завершение работы.
Заранее благодарен за помощь.
← →
GuAV © (2004-08-03 02:35) [2]
> Application.Terminate;
The application need not call the DestroyWindow or PostQuitMessage function when the session is ending.
т.е. этого делать не надо. Убери эту строку
> {в онкреат зануляю этот самый трм}
уже не проблема, но тоже незачем.
он и так нуль, а для наглядности можно дописать.
var
Trm:byte = 0;
← →
GuAV © (2004-08-03 02:50) [3]А проблема в том что FormCloseQuery происходит до GetEndSession.
попробуй FormClose, чтоб не закрывать - CloseAction:=caNone
или WM_QUERYENDSESSION
← →
denkop © (2004-08-05 00:19) [4]Получилось с помощью WM_QUERYENDSESSION совместно с OnClose. Спасибо за помощь.
Страницы: 1 вся ветка
Текущий архив: 2004.08.22;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.023 c