/* | |
* 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; | |
} | |