Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menentukan apakah kunci naik atau turun pada saat fungsi dipanggil, dan apakah tombol telah ditekan sejak panggilan sebelumnya ke GetAsyncKeyState.
Syntax
SHORT GetAsyncKeyState(
[in] int vKey
);
Parameter-parameternya
[in] vKey
Jenis: int
Kode kunci virtual. Untuk informasi selengkapnya, lihat Kode Kunci Virtual.
Anda dapat menggunakan konstanta pembeda kiri dan kanan untuk menentukan kunci tertentu. Lihat bagian Keterangan untuk informasi lebih lanjut.
Mengembalikan nilai
Jenis: PENDEK
Bit yang paling signifikan dari nilai pengembalian diatur jika kunci yang ditentukan saat ini tidak berfungsi. Karena bit yang paling signifikan adalah bit tanda, nilai negatif menunjukkan bahwa kunci saat ini tidak berfungsi.
Untuk kompatibilitas mundur, bit paling tidak signifikan diatur jika tombol yang ditentukan telah ditekan sejak panggilan sebelumnya terbaru dalam sesi ke GetAsyncKeyState untuk kunci tersebut, tetapi nilainya tidak dapat diandalkan. (Lihat Komentar.)
Semua bit hasil lainnya dicadangkan dan harus diabaikan.
Nilai yang dikembalikan adalah nol jika panggilan gagal. Alasan kegagalan termasuk
- Desktop saat ini bukan desktop aktif.
- Isolasi Hak Istimewa UI (UIPI) mencegah utas panggilan mengakses utas latar depan.
- Utas latar depan milik proses lain dan utas panggilan tidak memiliki akses DESKTOP_HOOKCONTROL atau DESKTOP_JOURNALRECORD ke desktopnya.
Komentar
Fungsi GetAsyncKeyState berfungsi dengan tombol mouse. Namun, ini memeriksa status tombol mouse fisik, bukan pada tombol mouse logis yang dipetakan oleh tombol fisik. Misalnya, panggilan GetAsyncKeyState(VK_LBUTTON) selalu mengembalikan status tombol mouse fisik kiri, terlepas dari apakah itu dipetakan ke tombol mouse logis kiri atau kanan. Anda dapat menentukan pemetaan tombol mouse fisik sistem saat ini ke tombol mouse logis dengan memanggil GetSystemMetrics(SM_SWAPBUTTON), yang mengembalikan TRUE jika tombol mouse telah ditukar.
Meskipun bit nilai pengembalian yang paling tidak signifikan menunjukkan apakah kunci telah ditekan sejak kueri terakhir, karena sifat multitugas Windows yang lebih awal, aplikasi lain dapat memanggil GetAsyncKeyState dan menerima bit "baru-baru ini ditekan" alih-alih aplikasi Anda. Perilaku bit yang paling tidak signifikan dari nilai pengembalian dipertahankan untuk kompatibilitas dengan aplikasi Windows 16-bit (yang non-preemptive) dan tidak boleh diandalkan karena dapat melaporkan negatif palsu.
Anda dapat menggunakan konstanta kode kunci virtual VK_SHIFT, VK_CONTROL, dan VK_MENU sebagai nilai untuk parameter vKey . Ini memberikan status tombol SHIFT, CTRL, atau ALT tanpa membedakan antara kiri dan kanan.
Anda dapat menggunakan konstanta kode kunci virtual berikut sebagai nilai untuk vKey untuk membedakan antara instans kiri dan kanan kunci tersebut.
| Kode | Meaning |
|---|---|
| VK_LSHIFT | Tombol shift kiri. |
| VK_RSHIFT | Tombol shift kanan. |
| VK_LCONTROL | Kunci kontrol kiri. |
| VK_RCONTROL | Kunci kontrol kanan. |
| VK_LMENU | Tombol menu kiri. |
| VK_RMENU | Tombol menu kanan. |
Konstanta pembeda kiri dan kanan ini hanya tersedia saat Anda memanggil fungsi GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, dan MapVirtualKey .
Example
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
BOOL considerSafeMode = FALSE;
// If the user holds the CTRL key while the app is launching,
// then offer to enter Safe Mode.
if (GetAsyncKeyState(VK_CONTROL) < 0)
{
considerSafeMode = TRUE;
}
...
}
Persyaratan
| Persyaratan | Nilai |
|---|---|
| Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
| Platform Target | Windows |
| Header | winuser.h (termasuk Windows.h) |
| Library | User32.lib |
| DLL | User32.dll |