Как я обрабатываю Ctrl+C в консольном приложении Delphi?

Мой ответ - смесь всех вышеперечисленных ответов, простая и короткая.

9
задан mjn 17 November 2010 в 17:19
поделиться

1 ответ

Из Windows API ( MSDN ):

BOOL WINAPI SetConsoleCtrlHandler(
    PHANDLER_ROUTINE HandlerRoutine,    // address of handler function  
    BOOL Add    // handler to add or remove 
   );   

Функция HandlerRoutine - это функция, которую консольный процесс определяет для обработки управляющих сигналов, полученных этим процессом. Функция может иметь любое имя.

BOOL WINAPI HandlerRoutine(
    DWORD dwCtrlType    //  control signal type
   );   

В Delphi процедура-обработчик должна выглядеть так:

function console_handler( dwCtrlType: DWORD ): BOOL; stdcall;
begin
  // Avoid terminating with Ctrl+C
  if (  CTRL_C_EVENT = dwCtrlType  ) then
    result := TRUE
  else
    result := FALSE;
end;
17
ответ дан 4 December 2019 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: