2010-12-07 1 views
7

Il y a un poste pour définir l'échelle du système hotkey global en C# hereRéglage raccourci clavier d'application à l'échelle en C#

Je veux mettre hotkey-large application de telle sorte que si l'utilisateur appuie sur une touche de raccourci sur une fenêtre enfant d'un application, une fenêtre particulière va le recevoir et le traiter.

Merci.

Répondre

6

Vous pouvez créer un formulaire de base pour votre application et définir la propriété keypreview sur true et gérer l'événement keydown pour que tous vos formulaires aient la même définition de clé.

Vous pouvez également utiliser la routine suivante pour enregistrer un raccourci clavier pour vos formulaires, mais dans cette méthode, vous devrez appeler la même méthode sur l'événement load de chaque formulaire.

protected override bool ProcessCmdKey(ref Message message, Keys keys) 
{ 
    switch (keys) 
    { 
     case Keys.F2 | Keys.Control: 
      //Process action here. 
      return false; 
    } 

    return false; 
} 

Vous pouvez utiliser les méthodes suivantes non gérés à partir user32.dll mais bien sûr, je ne dirais pas que.

static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint virtualKey); 
private static extern bool UnregisterHotKey(IntPtr hWnd, int id); 
+0

J'ai essayé avec RegisterHotKey, mais comme il fonctionne à l'échelle du système, je ne peux pas utiliser les clés appropriées dans d'autres applications ou d'autres instances de la même application. – Liton

+0

Vous devez utiliser l'approche du formulaire de base commun si vous souhaitez uniquement qu'elle fonctionne à l'échelle de l'application. – EricLaw

Questions connexes