Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перехватить завершение работы 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 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо