Bagikan melalui


Fungsi SetConsoleMode

Mengatur mode input buffer input konsol atau mode output buffer layar konsol.

Sintaks

BOOL WINAPI SetConsoleMode(
  _In_ HANDLE hConsoleHandle,
  _In_ DWORD  dwMode
);

Parameter

hConsoleHandle [in]
Handel ke buffer input konsol atau buffer layar konsol. Handel harus memiliki akses GENERIC_READ yang tepat. Untuk informasi selengkapnya, lihat Keamanan dan Hak Akses Buffer Konsol.

dwMode [in]
Mode input atau output yang akan diatur.

Jika parameter hConsoleHandle adalah handel input, mode dapat berupa satu atau beberapa nilai berikut. Saat konsol dibuat, semua mode input kecuali ENABLE_WINDOW_INPUT dan ENABLE_VIRTUAL_TERMINAL_INPUT diaktifkan secara default.

Value Makna
0x0004 ENABLE_ECHO_INPUT Karakter yang dibaca oleh fungsi ReadFile atau ReadConsole ditulis ke buffer layar aktif saat diketik ke konsol. Mode ini hanya dapat digunakan jika mode ENABLE_LINE_INPUT juga diaktifkan.
ENABLE_INSERT_MODE 0x0020 Saat diaktifkan, teks yang dimasukkan di jendela konsol akan disisipkan di lokasi kursor saat ini dan semua teks yang mengikuti lokasi tersebut tidak akan ditimpa. Saat dinonaktifkan, semua teks berikut akan ditimpa.
0x0002 ENABLE_LINE_INPUT Fungsi ReadFile atau ReadConsole hanya mengembalikan saat karakter pengembalian pengangkutan dibaca. Jika mode ini dinonaktifkan, fungsi akan kembali saat satu atau beberapa karakter tersedia.
0x0010 ENABLE_MOUSE_INPUT Jika penunjuk mouse berada di dalam batas jendela konsol dan jendela memiliki fokus keyboard, peristiwa mouse yang dihasilkan oleh gerakan mouse dan penekanan tombol ditempatkan di buffer input. Peristiwa ini dibuang oleh ReadFile atau ReadConsole, bahkan ketika mode ini diaktifkan. Fungsi ReadConsoleInput dapat digunakan untuk membaca rekaman input MOUSE_EVENT dari buffer input.
0x0001 ENABLE_PROCESSED_INPUT CTRL+C diproses oleh sistem dan tidak ditempatkan di buffer input. Jika buffer input sedang dibaca oleh ReadFile atau ReadConsole, kunci kontrol lainnya diproses oleh sistem dan tidak dikembalikan dalam buffer ReadFile atau ReadConsole. Jika mode ENABLE_LINE_INPUT juga diaktifkan, backspace, pengembalian gerbong, dan karakter umpan baris ditangani oleh sistem.
0x0040 ENABLE_QUICK_EDIT_MODE Bendera ini memungkinkan pengguna menggunakan mouse untuk memilih dan mengedit teks. Untuk mengaktifkan mode ini, gunakan ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Untuk menonaktifkan mode ini, gunakan ENABLE_EXTENDED_FLAGS tanpa bendera ini.
0x0008 ENABLE_WINDOW_INPUT Interaksi pengguna yang mengubah ukuran buffer layar konsol dilaporkan di buffer input konsol. Informasi tentang peristiwa ini dapat dibaca dari buffer input oleh aplikasi menggunakan fungsi ReadConsoleInput, tetapi tidak oleh mereka yang menggunakan ReadFile atau ReadConsole.
0x0200 ENABLE_VIRTUAL_TERMINAL_INPUT Mengatur bendera ini mengarahkan mesin pemrosesan Terminal Virtual untuk mengonversi input pengguna yang diterima oleh jendela konsol ke dalam Urutan Terminal Virtual Konsol yang dapat diambil oleh aplikasi pendukung melalui fungsi ReadFile atau ReadConsole.

Penggunaan khas bendera ini dimaksudkan bersama dengan ENABLE_VIRTUAL_TERMINAL_PROCESSING pada handel output untuk terhubung ke aplikasi yang berkomunikasi secara eksklusif melalui urutan terminal virtual.

Jika parameter hConsoleHandle adalah handel buffer layar, mode dapat berupa satu atau beberapa nilai berikut. Saat buffer layar dibuat, kedua mode output diaktifkan secara default.

Value Makna
0x0001 ENABLE_PROCESSED_OUTPUT Karakter yang ditulis oleh fungsi WriteFile atau WriteConsole atau digaungkan oleh fungsi ReadFile atau ReadConsole diurai untuk urutan kontrol ASCII, dan tindakan yang benar dilakukan. Karakter backspace, tab, bel, pengembalian gerbong, dan umpan baris diproses. Ini harus diaktifkan saat menggunakan urutan kontrol atau ketika ENABLE_VIRTUAL_TERMINAL_PROCESSING diatur.
0x0002 ENABLE_WRAP_AT_EOL_OUTPUT Saat menulis dengan WriteFile atau WriteConsole atau menggema dengan ReadFile atau ReadConsole, kursor berpindah ke awal baris berikutnya saat mencapai akhir baris saat ini. Hal ini menyebabkan baris yang ditampilkan di jendela konsol digulir ke atas secara otomatis saat kursor melaju melampaui baris terakhir di jendela. Ini juga menyebabkan konten buffer layar konsol menggulir ke atas (.. . /membuang baris atas buffer layar konsol) ketika kursor melaju melampaui baris terakhir di buffer layar konsol. Jika mode ini dinonaktifkan, karakter terakhir dalam baris ditimpa dengan karakter berikutnya.
0x0004 ENABLE_VIRTUAL_TERMINAL_PROCESSING Saat menulis dengan WriteFile atau WriteConsole, karakter diurai untuk VT100 dan urutan karakter kontrol serupa yang mengontrol gerakan kursor, mode warna/font, dan operasi lain yang juga dapat dilakukan melalui API Konsol yang ada. Untuk informasi selengkapnya, lihat Urutan Terminal Virtual Konsol.
Pastikan ENABLE_PROCESSED_OUTPUT diatur saat menggunakan bendera ini.
0x0008 DISABLE_NEWLINE_AUTO_RETURN Saat menulis dengan WriteFile atau WriteConsole, ini menambahkan status tambahan ke pembungkusan akhir baris yang dapat menunda operasi pemindahan kursor dan gulir buffer.

Biasanya ketika ENABLE_WRAP_AT_EOL_OUTPUT diatur dan teks mencapai akhir baris, kursor akan segera berpindah ke baris berikutnya dan konten buffer akan menggulir ke atas dengan satu baris. Berbeda dengan set bendera ini, kursor tidak berpindah ke baris berikutnya, dan operasi gulir tidak dilakukan. Karakter tertulis akan dicetak dalam posisi akhir pada baris dan kursor akan tetap berada di atas karakter ini seolah-olah ENABLE_WRAP_AT_EOL_OUTPUT mati, tetapi karakter yang dapat dicetak berikutnya akan dicetak seolah-olah ENABLE_WRAP_AT_EOL_OUTPUT aktif. Tidak ada penimpaan yang akan terjadi. Secara khusus, kursor dengan cepat turun ke baris berikut, gulir dilakukan jika perlu, karakter dicetak, dan kursor melanjutkan satu posisi lagi.

Penggunaan khas bendera ini dimaksudkan bersama dengan pengaturan ENABLE_VIRTUAL_TERMINAL_PROCESSING untuk meniru emulator terminal dengan lebih baik di mana menulis karakter akhir di layar (.. . /di sudut kanan bawah) tanpa memicu gulir langsung adalah perilaku yang diinginkan.
0x0010 ENABLE_LVB_GRID_WORLDWIDE API untuk menulis atribut karakter termasuk WriteConsoleOutput dan WriteConsoleOutputAttribute memungkinkan penggunaan bendera dari atribut karakter untuk menyesuaikan warna latar depan dan latar belakang teks. Selain itu, rentang bendera DBCS ditentukan dengan awalan COMMON_LVB. Secara historis, bendera ini hanya berfungsi di halaman kode DBCS untuk bahasa Tionghoa, Jepang, dan Korea.

Dengan pengecualian bendera byte dan byte berikutnya, bendera yang tersisa yang menjelaskan gambar garis dan video terbalik (.. . /swap warna latar depan dan latar belakang) dapat berguna bagi bahasa lain untuk menekankan bagian output.

Mengatur bendera mode konsol ini akan memungkinkan atribut ini digunakan di setiap halaman kode pada setiap bahasa.

Ini secara default untuk menjaga kompatibilitas dengan aplikasi yang diketahui yang secara historis telah memanfaatkan konsol mengabaikan bendera ini pada mesin non-CJK untuk menyimpan bit di bidang ini untuk tujuan mereka sendiri atau secara tidak sengaja.

Perhatikan bahwa menggunakan mode ENABLE_VIRTUAL_TERMINAL_PROCESSING dapat mengakibatkan kisi LVB dan bendera video terbalik diatur saat bendera ini masih nonaktif jika permintaan aplikasi terlampir menggarisbawahi atau membalikkan video melalui Urutan Terminal Virtual Konsol.

Nilai hasil

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Konsol terdiri dari buffer input dan satu atau beberapa buffer layar. Mode buffer konsol menentukan bagaimana konsol berperilaku selama operasi input atau output (I/O). Satu set konstanta bendera digunakan dengan handel input, dan set lain digunakan dengan handel buffer layar (output). Mengatur mode output dari satu buffer layar tidak memengaruhi mode output buffer layar lainnya.

Mode ENABLE_LINE_INPUT dan ENABLE_ECHO_INPUT hanya memengaruhi proses yang menggunakan ReadFile atau ReadConsole untuk membaca dari buffer input konsol. Demikian pula, mode ENABLE_PROCESSED_INPUT terutama memengaruhi pengguna ReadFile dan ReadConsole, kecuali bahwa itu juga menentukan apakah input CTRL+C dilaporkan dalam buffer input (untuk dibaca oleh fungsi ReadConsoleInput) atau diteruskan ke fungsi yang ditentukan oleh aplikasi.

Mode ENABLE_WINDOW_INPUT dan ENABLE_MOUSE_INPUT menentukan apakah interaksi pengguna yang melibatkan perubahan ukuran jendela dan tindakan mouse dilaporkan dalam buffer input atau dibuang. Peristiwa ini dapat dibaca oleh ReadConsoleInput, tetapi selalu difilter oleh ReadFile dan ReadConsole.

Mode ENABLE_PROCESSED_OUTPUT dan ENABLE_WRAP_AT_EOL_OUTPUT hanya memengaruhi proses menggunakan ReadFile atau ReadConsole dan WriteFile atau WriteConsole.

Untuk menentukan mode buffer input konsol saat ini atau buffer layar, gunakan fungsi GetConsoleMode.

Contoh

Misalnya, lihat Membaca Peristiwa Buffer Input.

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header ConsoleApi.h (melalui WinCon.h, sertakan Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Baca juga

Fungsi Konsol

Mode Konsol

GetConsoleMode

HandlerRoutine

ReadConsole

ReadConsoleInput

ReadFile

WriteConsole

WriteFile