This seems like what you want:Just construct a cConsoleInitializer.Code:#include <windows.h> #include <iostream> #include <cstdio> bool IsAConsole( HANDLE Handle ) { DWORD Mode; return GetConsoleMode( Handle, &Mode ) != 0; } FILE* MapStdToConsole() { FILE* File = NULL; HANDLE StdOut = GetStdHandle( STD_OUTPUT_HANDLE ); if( StdOut && AttachConsole( ATTACH_PARENT_PROCESS ) ) { if( IsAConsole( StdOut ) ) File = freopen( "CONOUT$", "w", stdout ); } return File; } class cConsoleInitializer { FILE* File; public: cConsoleInitializer() { File = MapStdToConsole(); } ~cConsoleInitializer() { if( File ) { INPUT_RECORD InputRecord; InputRecord.EventType = KEY_EVENT; InputRecord.Event.KeyEvent.bKeyDown = TRUE; InputRecord.Event.KeyEvent.dwControlKeyState = 0; InputRecord.Event.KeyEvent.uChar.UnicodeChar = VK_RETURN; InputRecord.Event.KeyEvent.wRepeatCount = 1; InputRecord.Event.KeyEvent.wVirtualKeyCode = VK_RETURN; InputRecord.Event.KeyEvent.wVirtualScanCode = MapVirtualKey( VK_RETURN, 0 ); DWORD Written = 0; WriteConsoleInput( GetStdHandle( STD_INPUT_HANDLE ), &InputRecord, 1, &Written ); fclose( File ); FreeConsole(); } } };




Reply With Quote