如何通过其他 windows 在 winform 上使用 keydown 功能?

How do I use the keydown function on a winform through other windows?

我有这段代码

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

它工作得很好,但我希望能够在全屏应用程序中按下它,这样我就可以在我的第二台显示器上看到进度条。有没有 属性 或我可以更改以使其像那样工作的东西?

如果是单键,您可以使用 RegisterHotKey。此答案中有示例代码:how to use RegisterHotKey and the one linked in it. The Microsoft C++ documentation is here.

如果你想拦截所有键盘输入,你需要一个键钩。我建议你 google WH_KEYBOARD_LL 和 SetWindowsHookEx。但我不认为你可以在 C# 中做到这一点;我只见过用 C/C++ 编写的关键钩子。它们还会引起一些防火墙的注意 - 拦截所有键盘输入可视为潜在的恶意行为。

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

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

此致,