Guide de configuration globale des raccourcis clavier C#
Les raccourcis clavier globaux vous permettent de capturer les frappes même lorsque le programme n'est pas mis au point. Ceci est utile pour implémenter des touches de raccourci ou effectuer des actions spécifiques déclenchées par des combinaisons de touches. Vous trouverez ci-dessous des instructions détaillées pour définir des raccourcis clavier globaux à l'aide de C#.
Créer une classe de gestion des raccourcis clavier
Tout d'abord, créez une classe nommée KeyboardHook
pour gérer l'enregistrement et la capture des raccourcis clavier :
<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>
Enregistrer les raccourcis clavier
Instanciez la classe KeyboardHook
et utilisez ses méthodes RegisterHotKey
pour enregistrer la combinaison de touches de raccourci souhaitée. Par exemple, pour enregistrer les touches Ctrl, Alt et F12 comme raccourcis clavier :
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
Gestion des événements de raccourci clavier
Pour exécuter du code lorsqu'un raccourci clavier est enfoncé, abonnez-vous à l'événement KeyboardHook
de la classe KeyPressed
:
<code class="language-csharp">hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);</code>
Dans un gestionnaire d'événements, vous pouvez effectuer n'importe quelle action ou logique de votre choix.
Touche de raccourci de déconnexion
Pour éviter les fuites de mémoire, assurez-vous de déconnecter les raccourcis clavier lorsque le programme se termine ou lorsque les raccourcis clavier ne sont plus nécessaires :
<code class="language-csharp">hook.Dispose();</code>
Conseils importants
NativeWindow
dans des environnements multithread sans mécanismes de synchronisation appropriés. RegisterHotKey
Fonctions Il y a une limite de 256 combinaisons de touches de raccourci par application. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!