| /* | |
| * Sending VK_PAUSE to the console window almost works as a mechanism for | |
| * pausing it, but it doesn't because the console could turn off the | |
| * ENABLE_LINE_INPUT console mode flag. | |
| */ | |
| CALLBACK DWORD pausingThread(LPVOID dummy) | |
| { | |
| if (1) { | |
| Sleep(1000); | |
| HWND hwnd = GetConsoleWindow(); | |
| SendMessage(hwnd, WM_KEYDOWN, VK_PAUSE, 1); | |
| Sleep(1000); | |
| SendMessage(hwnd, WM_KEYDOWN, VK_ESCAPE, 1); | |
| } | |
| if (0) { | |
| INPUT_RECORD ir; | |
| memset(&ir, 0, sizeof(ir)); | |
| ir.EventType = KEY_EVENT; | |
| ir.Event.KeyEvent.bKeyDown = TRUE; | |
| ir.Event.KeyEvent.wVirtualKeyCode = VK_PAUSE; | |
| ir.Event.KeyEvent.wRepeatCount = 1; | |
| } | |
| return 0; | |
| } | |
| int main() | |
| { | |
| HANDLE hin = GetStdHandle(STD_INPUT_HANDLE); | |
| HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); | |
| COORD c = { 0, 0 }; | |
| DWORD mode; | |
| GetConsoleMode(hin, &mode); | |
| SetConsoleMode(hin, mode & | |
| ~(ENABLE_LINE_INPUT)); | |
| CreateThread(NULL, 0, | |
| pausingThread, NULL, | |
| 0, NULL); | |
| int i = 0; | |
| while (true) { | |
| Sleep(100); | |
| printf("%d\n", ++i); | |
| } | |
| return 0; | |
| } | |