CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 15 of 20

Threaded View

  1. #2
    Join Date
    Jun 2008
    Posts
    592

    Re: To be or not to be (a console app)

    This seems like what you want:
    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();
            }
        }
    };
    Just construct a cConsoleInitializer.
    Last edited by Joeman; December 30th, 2011 at 04:39 AM.
    0100 0111 0110 1111 0110 0100 0010 0000 0110 1001 0111 0011 0010 0000 0110 0110 0110 1111 0111 0010
    0110 0101 0111 0110 0110 0101 0111 0010 0010 0001 0010 0001 0000 0000 0000 0000
    0000 0000 0000 0000

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured