Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中设置系统范围内的热键#_C#_.net_Windows_.net 3.5_Keyhook - Fatal编程技术网

C# 如何在C中设置系统范围内的热键#

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;

在v3中有一个名为HotKeySet的函数。它设置一个热键,按下时调用用户函数。这是一个系统范围的热键,这意味着设置热键后,该键不能用于任何其他用途

基本上,我想捕捉Esc键或任何其他键,如
$
`
,等等。当用户在任何地方按下它时,甚至在应用程序之外,它都应该让我知道

例如,我希望热键集({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文档中。我想有一个系统范围的热键,它剥夺了使用该键进行任何其他操作的选项(当然是设置的时间)。似乎这正是我需要的:-)谢谢!