![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перехватить завершение работы Windows ? [D7, WinXP]
_Ivan © (2005-07-06 18:29:00)Подскажите как из своей программы перехватить завершение/перезагрузку Windows ?
Спасибо!
Digitman (2005-07-07 12:23:00) [1]
> _Ivan (07.07.05 12:00) [6]
для GUI-приложений :
hwnd := CreateWindow(..);
..
while GetMessage(hwnd, Msg, 0, 0, 0) do begin
if Msg.message = WM_ENDSESSION then ..;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
_Ivan (2005-07-07 12:01:00) [2]Спасибо, сейчас попробую
Игорь Шевченко (2005-07-07 12:00:00) [3]
> А как быть, если приложение не имеет формы ?
Для консольных - SetConsoleCtrlHandler и обрабатывать CTRL_SHUTDOWN_EVENT
_Ivan (2005-07-07 12:00:00) [4]Digitman © (07.07.05 11:55) [4]
Да. Но мне хотелось бы узнать, как это сделать средствами API
Digitman (2005-07-07 11:55:00) [5]
> как быть, если приложение не имеет формы ?
Application используется ?
_Ivan (2005-07-07 11:51:00) [6]>Ванечка (07.07.05 09:48) [2]
Спасибо!
А как быть, если приложение не имеет формы ?
Ванечка (2005-07-07 09:48:00) [7]Вот держи:
{
To detect a Windows Shutdown, you must trap the
WM_EndSession message.
Declare a message handling procedure in your Form's Private section.
Um herauszufinden, ob Windows heruntergefahren wird, muss
die WM_EndSession abgefangen werden.
}
type
TForm1 = class(TForm)
private
procedure WMEndSession(var Msg: TWMEndSession); message WM_ENDSESSION;
public
end;
implementation
{$R *.DFM}
procedure TForm1.WMEndSession(var Msg: TWMEndSession);
begin
if Msg.EndSession = True then
ShowMessage('Windows is shutting down!');
inherited;
end;
begin...end (2005-07-06 18:44:00) [8]WM_ENDSESSION ?