WinAPI: Bagaimana cara mendapatkan status caps lock?

Bagaimana cara mengetahui apakah Caps Lock aktif atau nonaktif? Saya mencoba mencarinya tetapi yang saya temukan hanyalah cara mengaktifkan atau menonaktifkannya yang merupakan kebalikan dari apa yang saya cari.

Saya mencoba melakukan itu di C++ dan Delphi.
Mohon bantuannya


person SmRndGuy    schedule 16.12.2012    source sumber


Jawaban (3)


Anda menginginkan fungsi GetKeyState():

http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx

dengan kode kunci VK_CAPITAL. Kode kunci virtual lainnya ada di sini:

http://technet.microsoft.com/en-us/subscriptions/index/dd375731(v=vs.85).aspx

person HerrJoebob    schedule 16.12.2012
comment
Bukankah itu hanya mengetahui status kuncinya? Caps lock biasanya digunakan sebagai pengalih. Apakah ini benar-benar memberi Anda status peralihan untuk seluruh mesin? - person ; 22.12.2014
comment
Yup, ini benar-benar memberi Anda status sakelar. Ini tidak terlalu intuitif, karena metode ini memberi Anda penekanan tombol oleh pengguna serta status peralihan tombol secara keseluruhan. - person Jan Feldmann; 27.08.2016
comment
Status kunci yang dikembalikan dari fungsi ini berubah ketika thread membaca pesan-pesan kunci dari antrian pesannya. Status tersebut tidak mencerminkan status tingkat interupsi yang terkait dengan perangkat keras. Gunakan fungsi GetAsyncKeyState untuk mengambil informasi tersebut. -- msdn - person Orwellophile; 11.01.2017

Saya menemukan tautan dan cuplikan kode di bawah ini yang mungkin bisa membantu Anda

if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
  AfxMessageBox("Caps Lock ON!");
else
  AfxMessageBox("Caps Lock OFF!");
person Mattias Josefsson    schedule 16.12.2012
comment
Juga berfungsi dengan VK_SCROLL untuk Scroll Lock dan VK_NUMLOCK untuk Num Lock. - person Jan Feldmann; 27.08.2016
comment
Bagian penting dari ini adalah & 0x0001 karena informasi dikembalikan dalam bit orde rendah. - person wrecks; 23.01.2021

Gunakan GetAsyncKeyState dengan VK_CAPITAL (0x14)

person Bernd Elkemann    schedule 16.12.2012
comment
Jika fungsi berhasil, nilai kembalian menentukan apakah tombol ditekan sejak panggilan terakhir ke GetAsyncKeyState, dan apakah kunci saat ini naik atau turun. Jika bit paling signifikan disetel, kuncinya akan turun, dan jika bit paling signifikan disetel, kuncinya ditekan setelah panggilan sebelumnya ke GetAsyncKeyState. Namun, Anda sebaiknya tidak bergantung pada perilaku terakhir ini; untuk informasi lebih lanjut, lihat Keterangan. - person Orwellophile; 11.01.2017