Все процессы получают сигналы 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 -- там всё есть.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить