2010-02-03 135 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