Как консольное приложение может узнать, что Винды завершаются?

Previous  Top  Next

    
 

 

 

Автор: Nomadic 

 

Все процессы получают сигналы CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT и CTRL_SHUTDOWN_EVENT. А делается это (грубо говоря :) так:

Code:

 

BOOL Ctrl_Handler( DWORD Ctrl )

{

if( (Ctrl == CTRL_SHUTDOWN_EVENT) || (Ctrl == CTRL_LOGOFF_EVENT) )

{

   // Вау! Юзер обламывает!

}

else

{

   // Тут что-от другое можно творить. А можно и не творить :-)

}

return TRUE;

}

 

Code:

function Ctrl_Handler(Ctrl: Longint): LongBool;

begin

if Ctrl in [CTRL_SHUTDOWN_EVENT, CTRL_LOGOFF_EVENT] then

begin

   // Вау, вау

end

else

begin

   // Am I creator?

end;

Result := true;

end;

 

 

 

А где-то в программе:

 

SetConsoleCtrlHandler( Ctrl_Handler, TRUE );

 

Таких обработчиков можно навесить кучу. Если при обработке какого-то из сообщений обработчик возвращает FALSE, то вызывается следующий обработчик. Можно настроить таких этажерок, что ого-го :-)))

 

Короче, смотри описание SetConsoleCtrlHandler -- там всё есть.

©Drkb::02191

       

Взято с http://delphiworld.narod.ru