Hello, I used this solution, because it is more complete under PowerShell.
proc SetConsoleCtrlHandler(x:proc ; ok : WINBOOL) : WINBOOL {.stdcall,
dynlib: "kernel32", importc: "SetConsoleCtrlHandler".}
proc CtrlHandler(fdwCtrlType :DWORD) :WINBOOL =
const CTRL_C_EVENT = 0'i32
const CTRL_CLOSE_EVENT = 1'i32
const CTRL_BREAK_EVENT = 2'i32
const CTRL_LOGOFF_EVENT = 5'i32
const CTRL_SHUTDOWN_EVENT = 6'i32
case fdwCtrlType :
# Handle the CTRL-C signal.
of CTRL_C_EVENT:
echo "Ctrl-C event\n\n"
when not defined(release):
return 0
else:
return 1
# CTRL-CLOSE: confirm that the user wants to exit.
of CTRL_CLOSE_EVENT:
echo "Ctrl-Close event\n"
return 1
# Pass other signals to the next handler.
of CTRL_BREAK_EVENT:
echo "Ctrl-Break event\n"
return 1
of CTRL_LOGOFF_EVENT :
echo "Ctrl-logoff event\n"
return 0
of CTRL_SHUTDOWN_EVENT :
echo "Ctrl-Shtdown event\n"
return 0
else :
return 0
discard SetConsoleCtrlHandler(CtrlHandler,1'i32)
Run