Condividi tramite


Funzione ReadConsoleOutput

Importante

Questo documento descrive le funzionalità della piattaforma della console che non fanno più parte della roadmap dell'ecosistema. Non è consigliabile usare questo contenuto nei nuovi prodotti, ma continueremo a supportare gli utilizzi esistenti per il futuro indefinito. La soluzione moderna preferita è incentrata sulle sequenze di terminale virtuale per garantire la massima compatibilità negli scenari multipiattaforma. Per altre informazioni su questa decisione di progettazione, vedere il documento relativo alla console classica e al terminale virtuale.

Legge i dati degli attributi carattere e colore da un blocco rettangolare di celle di caratteri in un buffer dello schermo della console e la funzione scrive i dati in un blocco rettangolare in una posizione specificata nel buffer di destinazione.

Sintassi

BOOL WINAPI ReadConsoleOutput(
  _In_    HANDLE      hConsoleOutput,
  _Out_   PCHAR_INFO  lpBuffer,
  _In_    COORD       dwBufferSize,
  _In_    COORD       dwBufferCoord,
  _Inout_ PSMALL_RECT lpReadRegion
);

Parametri

hConsoleOutput [in]
Handle per il buffer dello schermo della console. L'handle deve avere il diritto di accesso GENERIC_READ . Per altre informazioni, vedere Sicurezza dei buffer della console e diritti di accesso.

lpBuffer [out]
Puntatore a un buffer di destinazione che riceve i dati letti dal buffer dello schermo della console. Questo puntatore viene considerato come origine di una matrice bidimensionale di strutture CHAR_INFO le cui dimensioni sono specificate dal parametro dwBufferSize.

dwBufferSize [in]
Dimensione del parametro lpBuffer , nelle celle di caratteri. Il membro X della struttura COORD è il numero di colonne. Il membro Y è il numero di righe.

dwBufferCoord [in]
Coordinate della cella superiore sinistra nel parametro lpBuffer che riceve i dati letti dal buffer dello schermo della console. Il membro X della struttura COORD è la colonna e il membro Y è la riga.

lpReadRegion [in, out]
Puntatore a una struttura SMALL_RECT. All'input, i membri della struttura specificano le coordinate in alto a sinistra e in basso a destra del rettangolo del buffer dello schermo della console da cui leggere la funzione. Nell'output, i membri della struttura specificano il rettangolo effettivo utilizzato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Osservazioni:

ReadConsoleOutput considera il buffer dello schermo della console e il buffer di destinazione come matrici bidimensionali (colonne e righe di celle di caratteri). Il rettangolo a cui punta il parametro lpReadRegion specifica le dimensioni e la posizione del blocco da leggere dal buffer dello schermo della console. Un rettangolo di destinazione della stessa dimensione si trova con la cella superiore sinistra alle coordinate del parametro dwBufferCoord nella matrice lpBuffer . I dati letti dalle celle nel rettangolo di origine del buffer dello schermo della console vengono copiati nelle celle corrispondenti nel buffer di destinazione. Se la cella corrispondente non rientra nei limiti del rettangolo del buffer di destinazione (le cui dimensioni sono specificate dal parametro dwBufferSize ), i dati non vengono copiati.

Le celle nel buffer di destinazione corrispondenti alle coordinate che non rientrano nei limiti del buffer dello schermo della console vengono lasciate invariate. In altre parole, si tratta delle celle per le quali non sono disponibili dati del buffer dello schermo da leggere.

Prima che ReadConsoleOutput restituisca, imposta i membri della struttura a cui punta il parametro lpReadRegion sul rettangolo del buffer dello schermo effettivo le cui celle sono state copiate nel buffer di destinazione. Questo rettangolo riflette le celle nel rettangolo di origine per cui esiste una cella corrispondente nel buffer di destinazione, perché ReadConsoleOutput ritaglia le dimensioni del rettangolo di origine per adattarsi ai limiti del buffer dello schermo della console.

Se il rettangolo specificato da lpReadRegion si trova completamente al di fuori dei limiti del buffer dello schermo della console o se il rettangolo corrispondente è posizionato completamente al di fuori dei limiti del buffer di destinazione, non vengono copiati dati. In questo caso, la funzione restituisce con i membri della struttura a cui punta il parametro lpReadRegion impostato in modo che il membro Right sia minore di Left o che il membro Bottom sia minore di Top. Per determinare le dimensioni del buffer dello schermo della console, usare la funzione GetConsoleScreenBufferInfo.

La funzione ReadConsoleOutput non ha alcun effetto sulla posizione del cursore del buffer dello schermo della console. Il contenuto del buffer dello schermo della console non viene modificato dalla funzione .

Questa funzione usa i caratteri Unicode o i caratteri a 8 bit dalla tabella codici corrente della console. Inizialmente il valore predefinito della tabella codici della console è la tabella codici OEM del sistema. Per modificare la tabella codici della console usare le funzioni SetConsoleCP o SetConsoleOutputCP. I consumer legacy possono anche usare i comandichcp o mode con cp select= ma non è consigliabile per il nuovo sviluppo.

Suggerimento

Questa API non è consigliata e non ha un terminale virtuale equivalente. Questa decisione allinea intenzionalmente la piattaforma Windows ad altri sistemi operativi in cui si prevede che l'applicazione client ricordi il proprio stato disegnato per ulteriori modifiche. Le applicazioni remote tramite utilità multipiattaforma e trasporti come SSH potrebbero non funzionare come previsto se si usa questa API.

Esempi

Per un esempio, vedere Lettura e scrittura di blocchi di caratteri e attributi.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione ConsoleApi2.h (tramite WinCon.h, includere Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll
Nomi Unicode e ANSI ReadConsoleOutputW (Unicode) e ReadConsoleOutputA (ANSI)

Vedi anche

Funzioni della console

Funzioni di output della console di basso livello

ReadConsoleOutputAttribute

ReadConsoleOutputCharacter

SetConsoleCP

SetConsoleOutputCP

SMALL_RECT

WriteConsoleOutput

CHAR_INFO

COORD