2010-02-03 94 views
2

AutoIt v3中有一个函数,称为HotKeySet。它设置了一个热键,在按下时调用用户功能。这是一个全系统热键,这意味着当热键被设置时,该键不能用于其他任何事情。如何在C系统中设置HotKey系统#

基本上,我想赶Esc键或其它键,像$`等,当用户按下它的任何地方,甚至外面的应用程序,它应该让我知道。

例如,我会像循环内的HotKeySet({ESC})那样做,当它完成时,程序会等待该按键被按下。

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 
     } 
    } 
} 

回答

0

我认为你需要安装一个系统钩子...

下面是一个例子:http://www.axino.net/tutorial/2009/02/keylogger-in-c-introduction

+0

我看过那个链接。它似乎没有阻止输入,只是记录你输入的内容。所以,如果你说让应用程序需要你按'y'并且你在Word中输入,那么当你按下它时,它实际上会被放在Word文档中。我想要有系统范围的HotKey,它取消了将该键用于其他任何事情的选项(当然这是设定的)。 – MadBoy 2010-02-05 10:15:12