Каталог статей
Как перехватить закрытие Win32 console
#include <windows.h> #include <stdio.h> #include <conio.h> HANDLE g_hEvent = 0; BOOL WINAPI HandlerRoutine( DWORD dwCtrlType // control signal type ) { if (!g_hEvent) return FALSE; switch (dwCtrlType) { case CTRL_C_EVENT: printf ("Ctrl+C pressed"); SetEvent (g_hEvent); break; case CTRL_BREAK_EVENT: printf ("Ctrl+Break pressed"); SetEvent (g_hEvent); break; case CTRL_CLOSE_EVENT: printf ("Close pressed"); SetEvent (g_hEvent); break; case CTRL_LOGOFF_EVENT: printf ("User logoff"); SetEvent (g_hEvent); break; case CTRL_SHUTDOWN_EVENT: printf ("System shutdown"); SetEvent (g_hEvent); break; } return TRUE; // as we handle the event } int main(int argc, char* argv[]) { g_hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); SetConsoleCtrlHandler (HandlerRoutine, TRUE); if (g_hEvent) { printf ("Waiting for the window to close...\n"); WaitForSingleObject (g_hEvent, INFINITE); CloseHandle (g_hEvent); } else printf ("Error creating event\n"); printf ("\nPress any key to exit!"); getch (); SetConsoleCtrlHandler (HandlerRoutine, FALSE); return 0; }
Категория: С/С++/MFC | Добавил: Cromartie (31.01.2013)
Просмотров: 407
| Рейтинг: 0.0 /0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0