У вас есть std :: atexit .Я только что попробовал это, и это работает, по крайней мере, для нормального завершения программы:
void at_exit_handler() {
MessageBox(NULL, L"Howdy", L"Howdy", MB_OK);
}
// register the exit function at program start:
std::atexit(at_exit_handler);
Если вы хотите перехватить вызов ExitProcess и предотвратить нормальную процедуру выхода, вам, возможно, нужно взглянуть на ОтладкаЗапись функции крюка .