Delen via


High-Level console-invoer- en uitvoerfuncties

Met de functies ReadFile en WriteFile , of de functies ReadConsole en WriteConsole , kan een toepassing console-invoer lezen en console-uitvoer schrijven als een stroom tekens. ReadConsole en WriteConsole gedragen zich precies zoals ReadFile en WriteFile , behalve dat ze kunnen worden gebruikt als breedtekenfuncties (waarin tekstargumenten Unicode moeten gebruiken) of als ANSI-functies (waarin tekstargumenten tekens uit de Windows-tekenset moeten gebruiken). Toepassingen die één set bronnen moeten onderhouden ter ondersteuning van Unicode of de ANSI-tekenset, moeten ReadConsole en WriteConsole gebruiken.

ReadConsole en WriteConsole kunnen alleen worden gebruikt met consolegrepen; ReadFile en WriteFile kunnen worden gebruikt met andere ingangen (zoals bestanden of pijpen). ReadConsole en WriteConsole mislukken als deze worden gebruikt met een standaardgreep die is omgeleid en die geen consolehandgreep meer is.

Als u toetsenbordinvoer wilt ophalen, kan een proces ReadFile of ReadConsole gebruiken met een ingang naar de invoerbuffer van de console of kan het ReadFile gebruiken om invoer uit een bestand of een pijp te lezen als STDIN deze is omgeleid. Deze functies retourneren alleen toetsenbordgebeurtenissen die kunnen worden vertaald in ANSI- of Unicode-tekens. De invoer die kan worden geretourneerd, bevat combinaties van besturingstoetsen. De functies retourneren geen toetsenbordevenementen met betrekking tot de functietoetsen of pijltoetsen. Invoergebeurtenissen die worden gegenereerd door muis, venster, focus of menu-invoer, worden verwijderd.

Als de regelinvoermodus is ingeschakeld (de standaardmodus), keren ReadFile en ReadConsole pas terug naar de aanroepende toepassing als de ENTER-toets is ingedrukt. Als de regelinvoermodus is uitgeschakeld, worden de functies pas geretourneerd als er ten minste één teken beschikbaar is. In beide modus worden alle beschikbare tekens gelezen totdat er geen sleutels meer beschikbaar zijn of het opgegeven aantal tekens is gelezen. Ongelezen tekens worden gebufferd tot de volgende leesbewerking. De functies rapporteren het totale aantal tekens dat daadwerkelijk wordt gelezen. Als de echo-invoermodus is ingeschakeld, worden tekens die door deze functies worden gelezen naar de actieve schermbuffer op de huidige cursorpositie geschreven.

Een proces kan WriteFile of WriteConsole gebruiken om te schrijven naar een actieve of inactieve schermbuffer, of kan WriteFile gebruiken om naar een bestand of een pijp te schrijven als STDOUT is omgeleid. De verwerkte uitvoermodus en wrap in de EOL-uitvoermodus bepalen hoe tekens worden geschreven of herhaald naar een schermbuffer.

Tekens die zijn geschreven door WriteFile of WriteConsole, of worden herhaald door ReadFile of ReadConsole, worden ingevoegd in een schermbuffer op de huidige cursorpositie. Terwijl elk teken wordt geschreven, gaat de cursorpositie naar de volgende tekencel; Het gedrag aan het einde van een rij is echter afhankelijk van de wrap van de consoleschermbuffer in de EOL-uitvoermodus.

Meer informatie over de positie van de cursor vindt u via virtuele terminalsreeksen, met name in de querystatuscategorie voor het vinden van de huidige positie en de cursorpositiecategorie voor het instellen van de huidige positie. Een toepassing kan ook de functie GetConsoleScreenBufferInfo gebruiken om de huidige cursorpositie te bepalen en de functie SetConsoleCursorPosition om de cursorpositie in te stellen. Het mechanisme voor virtuele terminalreeksen heeft echter de voorkeur voor alle nieuwe en doorlopende ontwikkeling. Meer informatie over de strategie achter deze beslissing vindt u in de klassieke functies versus virtuele terminal en roadmapdocumentatie voor ecosystemen .

Zie De High-Level invoer- en uitvoerfuncties gebruiken voor een voorbeeld dat gebruikmaakt van de I/O-functies op hoog niveau.