Maison >développement back-end >C++ >Comment puis-je définir des raccourcis clavier globaux en C# pour déclencher des événements même lorsque mon application n'est pas ciblée ?
Définissez des raccourcis clavier globaux à l'aide de C# pour déclencher des événements (même si l'application n'est pas active)
Cet article décrit comment définir des raccourcis clavier globaux en C# afin que des événements puissent être déclenchés même si l'application n'est pas active.
Question :
Capturez les frappes lorsque le programme n'est pas mis au point (par exemple Ctrl Alt J) pour déclencher des événements au sein du programme.
Solution :
Attention : Ce code ne déclenchera pas d'événements dans l'application console. Veuillez utiliser le projet WinForms pour implémenter la fonctionnalité d'événement.
Classe de crochet de clavier personnalisée :
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { private Window _window = new Window(); private int _currentId; public KeyboardHook() { // ... // 按键事件处理 // ... } public void RegisterHotKey(ModifierKeys modifier, Keys key) { // ... // 通过内部原生窗口注册热键 // ... } public event EventHandler<KeyPressedEventArgs> KeyPressed; }</code>
Classe de fenêtre pour la gestion des événements :
<code class="language-csharp">private class Window : NativeWindow, IDisposable { // ... protected override void WndProc(ref Message m) { // 处理热键按下 if (m.Msg == WM_HOTKEY) { // ... // 从LParam中提取修饰符和键 // ... // 触发KeyPressed事件 KeyPressed?.Invoke(this, new KeyPressedEventArgs(modifier, key)); } } // ... }</code>
Exemple d'utilisation :
<code class="language-csharp">public partial class Form1 : Form { private KeyboardHook hook = new KeyboardHook(); public Form1() { // ... hook.KeyPressed += hook_KeyPressed; //订阅事件 hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12); // ... } void hook_KeyPressed(object sender, KeyPressedEventArgs e) { // 处理按键事件 } }</code>
Remarque :
(ModifierKeys)1
, (ModifierKeys)2
, etc. 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!