none
Screenpuffer verwalten RRS feed

  • Frage

  • #include <windows.h> 
    #include <stdio.h>
    
    int main(void) 
    { 
        HANDLE hStdout, hNewScreenBuffer; 
        SMALL_RECT srctReadRect; 
        SMALL_RECT srctWriteRect; 
        CHAR_INFO chiBuffer[160]; // [2][80]; 
        COORD coordBufSize; 
        COORD coordBufCoord; 
        BOOL fSuccess; 
    
        // Get a handle to the STDOUT screen buffer to copy from and 
        // create a new screen buffer to copy to. 
    
        hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
        hNewScreenBuffer = CreateConsoleScreenBuffer( 
           GENERIC_READ |           // read/write access 
           GENERIC_WRITE, 
           FILE_SHARE_READ | 
           FILE_SHARE_WRITE,        // shared 
           NULL,                    // default security attributes 
           CONSOLE_TEXTMODE_BUFFER, // must be TEXTMODE 
           NULL);                   // reserved; must be NULL 
        if (hStdout == INVALID_HANDLE_VALUE || 
                hNewScreenBuffer == INVALID_HANDLE_VALUE) 
        {
            printf("CreateConsoleScreenBuffer failed - (%d)\n", GetLastError()); 
            return 1;
        }
    
        // Make the new screen buffer the active screen buffer. 
    
        if (! SetConsoleActiveScreenBuffer(hNewScreenBuffer) ) 
        {
            printf("SetConsoleActiveScreenBuffer failed - (%d)\n", GetLastError()); 
            return 1;
        }
    
        // Set the source rectangle. 
    
        srctReadRect.Top = 0;    // top left: row 0, col 0 
        srctReadRect.Left = 0; 
        srctReadRect.Bottom = 1; // bot. right: row 1, col 79 
        srctReadRect.Right = 79; 
    
        // The temporary buffer size is 2 rows x 80 columns. 
    
        coordBufSize.Y = 2; 
        coordBufSize.X = 80; 
    
        // The top left destination cell of the temporary buffer is 
        // row 0, col 0. 
    
        coordBufCoord.X = 0; 
        coordBufCoord.Y = 0; 
    
        // Copy the block from the screen buffer to the temp. buffer. 
    
        fSuccess = ReadConsoleOutput( 
           hStdout,        // screen buffer to read from 
           chiBuffer,      // buffer to copy into 
           coordBufSize,   // col-row size of chiBuffer 
           coordBufCoord,  // top left dest. cell in chiBuffer 
           &srctReadRect); // screen buffer source rectangle 
        if (! fSuccess) 
        {
            printf("ReadConsoleOutput failed - (%d)\n", GetLastError()); 
            return 1;
        }
    
        // Set the destination rectangle. 
    
        srctWriteRect.Top = 10;    // top lt: row 10, col 0 
        srctWriteRect.Left = 0; 
        srctWriteRect.Bottom = 11; // bot. rt: row 11, col 79 
        srctWriteRect.Right = 79; 
    
        // Copy from the temporary buffer to the new screen buffer. 
    
        fSuccess = WriteConsoleOutput( 
            hNewScreenBuffer, // screen buffer to write to 
            chiBuffer,        // buffer to copy from 
            coordBufSize,     // col-row size of chiBuffer 
            coordBufCoord,    // top left src cell in chiBuffer 
            &srctWriteRect);  // dest. screen buffer rectangle 
        if (! fSuccess) 
        {
            printf("WriteConsoleOutput failed - (%d)\n", GetLastError()); 
            return 1;
        }
        Sleep(5000); 
    
        // Restore the original active screen buffer. 
    
        if (! SetConsoleActiveScreenBuffer(hStdout)) 
        {
            printf("SetConsoleActiveScreenBuffer failed - (%d)\n", GetLastError()); 
            return 1;
        }
    
        return 0;
    }

    Mittwoch, 22. November 2017 15:01

Alle Antworten

  • Hallo DG7BBA,

    Würdest Du Dein Anliegen näher beschreiben? Ich habe den Threadtitel geändert, um den Verdacht einer Werbung zu zerstreuen.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 23. November 2017 06:55
    Administrator