在AutoIt v3中有一个名为 HotKeySet 的函数。它设置了一个按下时调用用户功能的热键。这是一个系统范围的热键,这意味着当设置热键时,密钥不能用于其他任何内容。
基本上,我想捕捉 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 :(得分:3)
您需要查看RegisterHotKey中的 user32.dll 。在pinvoke.net上有一个很好的例子, RegisterHotKey (user32) 。
答案 1 :(得分:0)
我认为您需要设置系统挂钩...
以下是一个示例:http://www.axino.net/tutorial/2009/02/keylogger-in-c-introduction