Heim > Backend-Entwicklung > C++ > Wie erfasst man globale Hotkeys in C#?

Wie erfasst man globale Hotkeys in C#?

Barbara Streisand
Freigeben: 2025-01-24 05:27:08
Original
570 Leute haben es durchsucht

How to Capture Global Hotkeys in C#?

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:

  • RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk): Registrieren Sie einen Hotkey bei Windows.
  • UnregisterHotKey(IntPtr hwnd, int id): Registrierung des Hotkeys für Windows aufheben.

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage