Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menetapkan Kekunci Panas Global dalam C# Menggunakan API Win32?
Panduan Tetapan Kekunci Panas Global C#
Kekunci pintas global membolehkan anda menangkap ketukan kekunci walaupun program tidak berada dalam fokus. Ini berguna untuk melaksanakan kekunci pintasan atau melakukan tindakan khusus yang dicetuskan oleh gabungan kekunci. Di bawah ialah arahan terperinci untuk menetapkan hotkey global menggunakan C#.
Buat kelas pengendalian hotkey
Pertama sekali, buat kelas bernama KeyboardHook
untuk mengendalikan pendaftaran dan menangkap kekunci pintas:
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // 导入必要的Win32 API函数 [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); [DllImport("user32.dll")] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); // 定义一个类来处理窗口消息 private class Window : NativeWindow, IDisposable { ... // 处理Win32热键消息 protected override void WndProc(ref Message m) { ... // 调用事件以通知父级 if (KeyPressed != null) KeyPressed(this, new KeyPressedEventArgs(modifier, key)); } } private Window _window = new Window(); private int _currentId; // 注册热键 public void RegisterHotKey(ModifierKeys modifier, Keys key) { ... // 注册热键 if (!RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)key)) throw new InvalidOperationException("无法注册热键。"); } }</code>
Daftar kekunci pintas
Segera kelas KeyboardHook
dan gunakan kaedah RegisterHotKey
nya untuk mendaftar kombinasi hotkey yang diingini. Contohnya, untuk mendaftarkan kekunci Ctrl, Alt dan F12 sebagai kekunci pintas:
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
Mengendalikan acara hotkey
Untuk melaksanakan kod apabila kekunci pintas ditekan, langgan acara KeyboardHook
kelas KeyPressed
:
<code class="language-csharp">hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);</code>
Dalam pengendali acara anda boleh melakukan sebarang tindakan atau logik yang anda mahukan.
Kekunci Panas Log Keluar
Untuk mengelakkan kebocoran memori, pastikan anda log keluar kekunci pintas apabila program keluar atau apabila kekunci pintasan tidak lagi diperlukan:
<code class="language-csharp">hook.Dispose();</code>
Petua Penting
NativeWindow
dalam persekitaran berbilang benang tanpa mekanisme penyegerakan yang sesuai. RegisterHotKey
Fungsi Terdapat had 256 kombinasi hotkey bagi setiap aplikasi. Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Kekunci Panas Global dalam C# Menggunakan API Win32?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!