Fungsi RegisterHotKey (winuser.h)
Mendefinisikan kunci panas di seluruh sistem.
Sintaksis
BOOL RegisterHotKey(
[in, optional] HWND hWnd,
[in] int id,
[in] UINT fsModifiers,
[in] UINT vk
);
Parameter
[in, optional] hWnd
Jenis: HWND
Handel ke jendela yang akan menerima pesan WM_HOTKEY yang dihasilkan oleh kunci panas. Jika parameter ini NULL, pesan WM_HOTKEY diposting ke antrean pesan utas panggilan dan harus diproses dalam perulangan pesan.
[in] id
Jenis: int
Pengidentifikasi kunci panas. Jika parameter
[in] fsModifiers
Jenis: UINT
Tombol yang harus ditekan dalam kombinasi dengan kunci yang ditentukan oleh parameter
Nilai |
Arti |
---|---|
MOD_ALT 0x0001 |
Salah satu kunci ALT harus ditahan. |
MOD_CONTROL 0x0002 |
Salah satu kunci CTRL harus ditahan. |
MOD_NOREPEAT 0x4000 |
Mengubah perilaku hotkey sehingga pengulangan otomatis keyboard tidak menghasilkan beberapa pemberitahuan hotkey. Windows Vista: Bendera ini tidak didukung. |
MOD_SHIFT 0x0004 |
Salah satu tombol SHIFT harus ditahan. |
MOD_WIN 0x0008 |
Salah satu kunci WINDOWS harus ditahan. Kunci ini diberi label dengan logo Windows. Pintasan keyboard yang melibatkan tombol WINDOWS dicadangkan untuk digunakan oleh sistem operasi. |
[in] vk
Jenis: UINT
Kode kunci virtual dari kunci panas. Lihat Kode Kunci Virtual.
Mengembalikan nilai
Jenis: BOOL
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Fungsi ini gagal jika Anda mencoba mengaitkan kunci panas dengan jendela yang dibuat oleh utas lain.
Biasanya, RegisterHotKey juga gagal jika penekanan tombol yang ditentukan untuk kunci panas telah didaftarkan untuk kunci panas lain. Namun, beberapa hotkey default yang sudah ada sebelumnya yang didaftarkan oleh OS (seperti PrintScreen, yang meluncurkan alat Snipping) dapat ditimpa oleh pendaftaran kunci panas lain ketika salah satu jendela aplikasi berada di latar depan.
Komentar
Ketika tombol ditekan, sistem mencari kecocokan terhadap semua tombol panas. Setelah menemukan kecocokan, sistem memposting pesan WM_HOTKEY ke antrean pesan jendela tempat kunci panas dikaitkan. Jika hot key tidak dikaitkan dengan jendela, maka pesan WM_HOTKEY diposting ke utas yang terkait dengan hot key.
Jika hot key sudah ada dengan parameter
Kunci F12 dicadangkan untuk digunakan oleh debugger setiap saat, sehingga tidak boleh didaftarkan sebagai kunci panas. Bahkan ketika Anda tidak men-debug aplikasi, F12 dicadangkan jika debugger mode kernel atau debugger just-in-time adalah residen.
Aplikasi harus menentukan nilai id dalam rentang 0x0000 melalui 0xBFFF. DLL bersama harus menentukan nilai dalam rentang 0xC000 melalui 0xFFFF (rentang yang dikembalikan oleh fungsi
**Windows Server 2003: **Jika kunci panas sudah ada dengan hWnd yang sama dan id parameter, itu digantikan oleh kunci panas baru.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi
Dalam contoh ini, hotkey 'ALT+b' terdaftar untuk utas utama. Ketika hotkey ditekan, utas akan menerima pesan
#include "stdafx.h"
int _cdecl _tmain (
int argc,
TCHAR *argv[])
{
if (RegisterHotKey(
NULL,
1,
MOD_ALT | MOD_NOREPEAT,
0x42)) //0x42 is 'b'
{
_tprintf(_T("Hotkey 'ALT+b' registered, using MOD_NOREPEAT flag\n"));
}
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
if (msg.message == WM_HOTKEY)
{
_tprintf(_T("WM_HOTKEY received\n"));
}
}
return 0;
}
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
Platform Target |
Windows |
Header |
winuser.h (termasuk Windows.h) |
Pustaka |
User32.lib |
DLL |
User32.dll |
Lihat juga
Input Keyboard
Daftarkan hotkey untuk aplikasi saat ini (CSRegisterHotkey)
Daftarkan hotkey untuk aplikasi saat ini (CppRegisterHotkey)