Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencipta Hotkey Global dalam Go (Golang)?
Bagaimana untuk Melaksanakan Kekunci Panas Global dalam Go (Golang)?
Mewujudkan kekunci pintas global yang berfungsi merentas platform dalam Go (Golang) melibatkan menggunakan panggilan sistem. Begini cara anda boleh mencapai ini:
1. Muatkan Pustaka Khusus Sistem Pengendalian
Pakej syscall Go membolehkan anda melakukan panggilan sistem. Walau bagaimanapun, antara muka berbeza di seluruh sistem pengendalian. Untuk mengakses dokumentasi khusus platform, jalankan:
godoc -http=:6060
Navigasi ke http://localhost:6060/pkg/syscall/ untuk mendapatkan gambaran keseluruhan terperinci.
2. Tentukan Jenis Hotkey
Buat jenis untuk mewakili hotkey dengan ID unik, pengubah suai (Alt, Ctrl, dll.) dan kod kunci.
type Hotkey struct { Id int // Unique id Modifiers int // Mask of modifiers KeyCode int // Key code, e.g. 'A' }
3. Muatkan User32.dll pada Windows
Untuk sokongan Windows, muatkan user32.dll:
user32 := syscall.MustLoadDLL("user32") defer user32.Release()
4. Daftar Hotkeys
Cari dan panggil fungsi RegisterHotkey() daripada user32.dll untuk mendaftar hotkeys anda. Contohnya:
// Hotkeys to listen to: keys := map[int16]*Hotkey{ 1: &Hotkey{1, ModAlt + ModCtrl, 'O'}, // ALT+CTRL+O 2: &Hotkey{2, ModAlt + ModShift, 'M'}, // ALT+SHIFT+M 3: &Hotkey{3, ModAlt + ModCtrl, 'X'}, // ALT+CTRL+X } // Register hotkeys: for _, v := range keys { r1, _, err := reghotkey.Call( 0, uintptr(v.Id), uintptr(v.Modifiers), uintptr(v.KeyCode)) if r1 == 1 { fmt.Println("Registered", v) } else { fmt.Println("Failed to register", v, ", error:", err) } }
5. Dengarkan Acara Kekunci Panas
Cari dan panggil fungsi PeekMessage() daripada user32.dll untuk mendengar tekanan kekunci global.
peekmsg := user32.MustFindProc("PeekMessageW")
6. Mengendalikan Peristiwa Hotkey
Buat gelung untuk menyemak acara hotkey secara berterusan. Jika kekunci pintas berdaftar ditekan, cetak butirannya ke konsol.
for { var msg = &MSG{} peekmsg.Call(uintptr(unsafe.Pointer(msg)), 0, 0, 0, 1) // Registered id is in the WPARAM field: if id := msg.WPARAM; id != 0 { fmt.Println("Hotkey pressed:", keys[id]) if id == 3 { // CTRL+ALT+X = Exit fmt.Println("CTRL+ALT+X pressed, goodbye...") return } } time.Sleep(time.Millisecond * 50) }
Dengan mengikuti langkah ini, anda boleh mencipta kekunci pintas global yang berfungsi secara konsisten merentas sistem pengendalian yang berbeza dalam Go (Golang).
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Hotkey Global dalam Go (Golang)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!