C# Global Hotkey Setting Guide
Globale Hotkeys ermöglichen es Ihnen, Tastenanschläge zu erfassen, auch wenn das Programm nicht im Fokus ist. Dies ist nützlich, um Tastenkombinationen zu implementieren oder bestimmte Aktionen auszuführen, die durch Tastenkombinationen ausgelöst werden. Nachfolgend finden Sie detaillierte Anweisungen zum Festlegen globaler Hotkeys mit C#.
Erstellen Sie eine Hotkey-Handhabungsklasse
Erstellen Sie zunächst eine Klasse mit dem Namen KeyboardHook
, um die Registrierung und Erfassung von Hotkeys zu verwalten:
<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>
Hotkeys registrieren
Instanziieren Sie die KeyboardHook
-Klasse und verwenden Sie ihre RegisterHotKey
-Methoden, um die gewünschte Hotkey-Kombination zu registrieren. Um beispielsweise die Tasten Strg, Alt und F12 als Hotkeys zu registrieren:
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
Verwaltung von Hotkey-Ereignissen
Um Code auszuführen, wenn ein Hotkey gedrückt wird, abonnieren Sie das KeyboardHook
-Ereignis der Klasse KeyPressed
:
<code class="language-csharp">hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);</code>
In einem Event-Handler können Sie jede gewünschte Aktion oder Logik ausführen.
Abmelde-Hotkey
Um Speicherverluste zu vermeiden, melden Sie Hotkeys unbedingt ab, wenn das Programm beendet wird oder wenn die Hotkeys nicht mehr benötigt werden:
<code class="language-csharp">hook.Dispose();</code>
Wichtige Tipps
NativeWindow
in Multithread-Umgebungen ohne entsprechende Synchronisierungsmechanismen. RegisterHotKey
Funktionen Es gibt ein Limit von 256 Hotkey-Kombinationen pro Anwendung. Das obige ist der detaillierte Inhalt vonWie lege ich globale Hotkeys in C# mithilfe der Win32-API fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!