Maison >développement back-end >C++ >Comment capturer des raccourcis clavier globaux en C# ?

Comment capturer des raccourcis clavier globaux en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-24 05:27:08571parcourir

How to Capture Global Hotkeys in C#?

Capture des raccourcis clavier globaux en C#

En C#, la capture des frappes même lorsque le programme n'est pas actif nécessite une manipulation particulière. Cet article vous guidera tout au long du processus de configuration des raccourcis clavier globaux afin que votre programme réponde aux combinaisons de touches même lorsque d'autres fenêtres sont actives.

Utiliser l'appel de la plateforme

Afin d'interagir avec le système d'exploitation Windows, C# utilise des appels de plateforme (DllImport). Les fonctions DLL suivantes sont essentielles pour définir les raccourcis clavier :

  • RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk) : enregistrez un raccourci clavier avec Windows.
  • UnregisterHotKey(IntPtr hwnd, int id) : désenregistrez le raccourci clavier pour Windows.

Créer une classe de crochetage de clavier

Pour gérer les raccourcis clavier globaux, créez une classe KeyboardHook qui hérite de IDisposable :

<code class="language-csharp">public sealed class KeyboardHook : IDisposable
{
    // ...
}</code>

Dans cette classe, vous devez créer une classe Window imbriquée pour recevoir des messages de raccourci clavier :

<code class="language-csharp">private class Window : NativeWindow, IDisposable
{
    // ...
}</code>

Enregistrer les raccourcis clavier

Pour enregistrer un raccourci clavier, utilisez la méthode RegisterHotKey dans la classe KeyboardHook :

<code class="language-csharp">public void RegisterHotKey(ModifierKeys modifier, Keys key)
{
    // ...
}</code>

Cette méthode incrémentera un compteur interne (_currentId), puis enregistrera le raccourci clavier auprès de Windows en utilisant le modificateur et la touche spécifiés.

Répond aux pressions sur les touches de raccourci

Lorsqu'un raccourci clavier est enfoncé, le gestionnaire d'événements KeyPressed est déclenché. Vous pouvez vous abonner à cet événement dans votre application principale et effectuer l'action souhaitée lorsque le raccourci clavier est déclenché.

Exemple d'utilisation

Dans l'exemple fourni, un formulaire avec un label est créé pour afficher les touches enfoncées :

<code class="language-csharp">public partial class Form1 : Form
{
    // ...
}</code>

Dans le constructeur du formulaire, créez une instance KeyboardHook et enregistrez les combinaisons de touches de raccourci pour Control, Alt et F12 :

<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>

Lorsqu'un raccourci clavier est enfoncé, le gestionnaire d'événements hook_KeyPressed est appelé et l'étiquette est mise à jour avec le modificateur et la touche enfoncées.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn