如何通过其他窗口在winform上使用keydown函数?

时间:2016-03-31 13:52:06

标签: c# winforms keydown

我有这段代码

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if(e.KeyCode== Keys.Z)
        {
            BarTimer.Value = 0;
            timer1.Start();
            timer1.Interval = 500;
            BarTimer.Minimum = 0;
            BarTimer.Maximum = 80;
        }
    }

它工作正常,但我希望能够在全屏应用程序中按下它,所以我可以在第二台显示器上看到进度条。是否有财产或其他我可以改变以使其像那样工作?

2 个答案:

答案 0 :(得分:1)

如果它是单个键,您可以使用RegisterHotKey。此答案中有示例代码:how to use RegisterHotKey和其中链接的代码。 Microsoft C ++文档为here

如果要拦截所有键盘输入,则需要一个键钩。我建议你google WH_KEYBOARD_LL和SetWindowsHookEx。但我不认为你可以用c#做到这一点;我只见过用C / C ++编写的密钥钩子。它们还会引起一些防火墙的兴趣 - 拦截所有键盘输入可能被认为是潜在的敌意。

答案 1 :(得分:1)

嗨,我知道我在代码项目中找到了一个很好的教程。 当我需要这样的东西时,它对我有用。

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

此致