Erfassen globaler Hotkeys in C#
In C# erfordert die Erfassung von Tastenanschlägen, auch wenn das Programm nicht im Fokus ist, eine besondere Behandlung. Dieser Artikel führt Sie durch den Prozess zum Festlegen globaler Hotkeys, damit Ihr Programm auch dann auf Tastenkombinationen reagiert, wenn andere Fenster aktiv sind.
Plattformaufruf nutzen
Um mit dem Windows-Betriebssystem zu interagieren, verwendet C# Plattformaufrufe (DllImport). Für das Setzen von Hotkeys sind folgende DLL-Funktionen zwingend erforderlich:
Tastatur-Hook-Klasse erstellen
Um globale Hotkeys zu verarbeiten, erstellen Sie eine KeyboardHook-Klasse, die von IDisposable erbt:
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // ... }</code>
In dieser Klasse müssen Sie eine verschachtelte Window-Klasse erstellen, um Hotkey-Nachrichten zu empfangen:
<code class="language-csharp">private class Window : NativeWindow, IDisposable { // ... }</code>
Hotkeys registrieren
Um einen Hotkey zu registrieren, verwenden Sie die RegisterHotKey-Methode in der KeyboardHook-Klasse:
<code class="language-csharp">public void RegisterHotKey(ModifierKeys modifier, Keys key) { // ... }</code>
Diese Methode erhöht einen internen Zähler (_currentId) und registriert dann den Hotkey bei Windows unter Verwendung des angegebenen Modifikators und der angegebenen Taste.
Reagiert auf Hotkey-Drücke
Wenn ein Hotkey gedrückt wird, wird der Event-Handler KeyPressed ausgelöst. Sie können dieses Ereignis in Ihrer Hauptanwendung abonnieren und bei Auslösung des Hotkeys die gewünschte Aktion ausführen.
Beispielverwendung
Im bereitgestellten Beispiel wird ein Formular mit einer Beschriftung erstellt, um die gedrückten Tasten anzuzeigen:
<code class="language-csharp">public partial class Form1 : Form { // ... }</code>
Erstellen Sie im Konstruktor des Formulars eine KeyboardHook-Instanz und registrieren Sie die Hotkey-Kombinationen für Strg, Alt und F12:
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
Wenn ein Hotkey gedrückt wird, wird der Hook_KeyPressed-Ereignishandler aufgerufen und die Beschriftung wird mit dem Modifikator und der gedrückten Taste aktualisiert.
Das obige ist der detaillierte Inhalt vonWie erfasst man globale Hotkeys in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!