2010-02-03 4 views
2

En AutoIt v3, il existe une fonction appelée HotKeySet. Il définit un raccourci clavier qui appelle une fonction utilisateur lorsqu'il est pressé. Il s'agit d'un raccourci clavier système, ce qui signifie que la clé ne peut pas être utilisée pour autre chose lorsque le raccourci clavier est défini.Comment configurer HotKey à l'échelle du système en C#

Fondamentalement, je voudrais attraper Esc ou toute autre touche comme $, `, etc., et lorsque l'utilisateur partout, même en dehors de l'application presse, il faut me le faire savoir. Par exemple, je voudrais faire comme HotKeySet ({ESC}) à l'intérieur d'une boucle et quand c'est fait, le programme attendrait que cette touche soit pressée auparavant.

public static void work() { 
    while (true) { 
     string task = null; 
     lock (locker) 
      if (tasks.Count > 0) { 
       task = tasks.Dequeue(); 
       if (task == null) { 
        return; 
       } 
      } 
     if (task != null) { 
      //MessageBox.Show("Performing task: " + task); 
      Program.mainAnnounceWindow.setLogTextBox(task); 
      Program.mainAnnounceWindow.setLogTrayTip(task); 
      Program.windowStateChange("Show"); 

      // Set the hotkey here 
      SetHotkey(`); 

      //Wait for hotkey to press when it's pressed... Execute some stuff 
      Thread.Sleep(5000); // Simulate work... 
      Program.windowStateChange("Hide"); 
     } 
     else { 
      wh.WaitOne(); // No more tasks - wait for a signal 
     } 
    } 
} 

Répondre

0

Je pense que vous devez configurer un crochet système ...

Voici un exemple: http://www.axino.net/tutorial/2009/02/keylogger-in-c-introduction

+0

J'ai vu ce lien. Il ne semble pas bloquer l'entrée mais enregistre juste ce que vous tapez. Donc, si vous dites avoir une application qui vous oblige à agir en appuyant sur «y» et que vous êtes en tapant Word, alors lorsque vous appuyez sur y, il sera effectivement mis en document Word. Je voudrais avoir le système HotKey qui enlève l'option d'utiliser cette clé pour toute autre chose (pour le moment, c'est bien sûr). – MadBoy

Questions connexes