C# 如何在C中设置系统范围内的热键#
在v3中有一个名为HotKeySet的函数。它设置一个热键,按下时调用用户函数。这是一个系统范围的热键,这意味着设置热键后,该键不能用于任何其他用途 基本上,我想捕捉Esc键或任何其他键,如C# 如何在C中设置系统范围内的热键#,c#,.net,windows,.net-3.5,keyhook,C#,.net,Windows,.net 3.5,Keyhook,在v3中有一个名为HotKeySet的函数。它设置一个热键,按下时调用用户函数。这是一个系统范围的热键,这意味着设置热键后,该键不能用于任何其他用途 基本上,我想捕捉Esc键或任何其他键,如$,`,等等。当用户在任何地方按下它时,甚至在应用程序之外,它都应该让我知道 例如,我希望热键集({ESC})在一个循环中,当它完成时,程序将等待该键被按下 public static void work() { while (true) { string task = null;
$
,`
,等等。当用户在任何地方按下它时,甚至在应用程序之外,它都应该让我知道
例如,我希望热键集({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
}
}
}
我想你需要设置一个系统挂钩
下面是一个示例:您需要在中查看。pinvoke.net就是一个很好的例子。我已经看到了这个链接。它似乎并不阻止输入,只是记录您键入的内容。所以,若你们有一个应用程序,要求你们按“y”键,而你们正在用Word打字,那个么当你们按y键时,它实际上会被放入Word文档中。我想有一个系统范围的热键,它剥夺了使用该键进行任何其他操作的选项(当然是设置的时间)。似乎这正是我需要的:-)谢谢!