Bagikan melalui


Fungsi Input dan Output Konsol Tingkat Tinggi

Fungsi ReadFile dan WriteFile, atau fungsi ReadConsole dan WriteConsole, memungkinkan aplikasi membaca input konsol dan menulis output konsol sebagai aliran karakter. ReadConsole dan WriteConsole berperilaku persis seperti ReadFile dan WriteFile kecuali bahwa mereka dapat digunakan sebagai fungsi karakter lebar (di mana argumen teks harus menggunakan Unicode) atau sebagai fungsi ANSI (di mana argumen teks harus menggunakan karakter dari kumpulan karakter Windows). Aplikasi yang perlu mempertahankan satu set sumber untuk mendukung unicode atau set karakter ANSI harus menggunakan ReadConsole dan WriteConsole.

ReadConsole dan WriteConsole hanya dapat digunakan dengan handel konsol; ReadFile dan WriteFile dapat digunakan dengan handel lain (seperti file atau pipa). ReadConsole dan WriteConsole gagal jika digunakan dengan handel standar yang telah dialihkan dan bukan lagi handel konsol.

Untuk mendapatkan input keyboard, proses dapat menggunakan ReadFile atau ReadConsole dengan handel ke buffer input konsol, atau dapat menggunakan ReadFile untuk membaca input dari file atau pipa jika STDIN telah dialihkan. Fungsi-fungsi ini hanya mengembalikan peristiwa keyboard yang dapat diterjemahkan ke dalam karakter ANSI atau Unicode. Input yang dapat dikembalikan mencakup kombinasi kunci kontrol. Fungsi tidak mengembalikan peristiwa keyboard yang melibatkan tombol fungsi atau tombol panah. Peristiwa input yang dihasilkan oleh mouse, jendela, fokus, atau input menu dibuang.

Jika mode input baris diaktifkan (mode default), ReadFile dan ReadConsole tidak kembali ke aplikasi panggilan hingga tombol ENTER ditekan. Jika mode input baris dinonaktifkan, fungsi tidak kembali hingga setidaknya satu karakter tersedia. Dalam kedua mode, semua karakter yang tersedia dibaca hingga tidak ada lagi kunci yang tersedia atau jumlah karakter yang ditentukan telah dibaca. Karakter yang belum dibaca di-buffer hingga operasi baca berikutnya. Fungsi melaporkan jumlah total karakter yang benar-benar dibaca. Jika mode input echo diaktifkan, karakter yang dibaca oleh fungsi-fungsi ini ditulis ke buffer layar aktif pada posisi kursor saat ini.

Proses dapat menggunakan WriteFile atau WriteConsole untuk menulis ke buffer layar aktif atau tidak aktif, atau dapat menggunakan WriteFile untuk menulis ke file atau pipa jika STDOUT telah dialihkan. Mode output yang diproses dan dibungkus pada mode output EOL mengontrol cara karakter ditulis atau digaungkan ke buffer layar.

Karakter yang ditulis oleh WriteFile atau WriteConsole, atau digaungkan oleh ReadFile atau ReadConsole, disisipkan dalam buffer layar pada posisi kursor saat ini. Saat setiap karakter ditulis, posisi kursor maju ke sel karakter berikutnya; namun, perilaku di akhir baris tergantung pada pembungkus buffer layar konsol pada mode output EOL.

Detail lebih lanjut tentang posisi kursor dapat ditemukan melalui urutan terminal virtual, khususnya dalam kategori status kueri untuk menemukan posisi saat ini dan kategori posisi kursor untuk mengatur posisi saat ini. Atau, aplikasi dapat menggunakan fungsi GetConsoleScreenBufferInfo untuk menentukan posisi kursor saat ini dan fungsi SetConsoleCursorPosition untuk mengatur posisi kursor. Namun, mekanisme urutan terminal virtual lebih disukai untuk semua pengembangan baru dan yang sedang berlangsung. Detail selengkapnya tentang strategi di balik keputusan ini dapat ditemukan dalam fungsi klasik versus terminal virtual dan dokumentasi peta jalan ekosistem.

Untuk contoh yang menggunakan fungsi I/O konsol tingkat tinggi, lihat Menggunakan Fungsi Input dan Output Tingkat Tinggi.