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