Keydown活动 - 冷静下来

时间:2012-02-12 10:38:49

标签: c# keydown

我有一个带有keydown事件的项目,但是每次按键时,我都会点击该键,如果我点击它,它会等待半秒钟并快速启动垃圾邮件。我需要它来垃圾邮件,没有冷静,我该怎么办?

3 个答案:

答案 0 :(得分:2)

您可以观看相同键的keydown和keyup事件,而不是更改系统范围的设置并且仍然有250ms的延迟(不要忘记用户可以同时按下多个键并以不同的顺序释放它们)。在keydown上启动一个具有所需频率的计时器,并在keyup上停止它,并将您之前的keydown处理程序设置为计时器处理程序。

答案 1 :(得分:1)

这称为键盘重复延迟,它是一个系统范围的属性,可以在“控制面板”的“键盘”部分中进行设置。或者,您可以使用SystemParametersInfo Win32 API函数通过代码设置它,设置SPI_SETKEYBOARDDELAY标志。

要从C#调用它,您可能需要定义P / Invoke签名,但幸运的是PInvoke.net上的某个人已经为我们done this了。

不要忘记您正在设置系统范围的设置!这可能需要管理员权限,在任何情况下,你应该玩得很好并在完成后将其恢复到原始设置。

答案 2 :(得分:0)

尝试使用Reactive Extensions并使用其中一个与时间相关的运算符(如Sample或Interval)来实现此处所需的功能。

http://msdn.microsoft.com/en-us/data/gg577609

作为一个例子(就像一个指南,输入没有VS)

  Observable.FromEventPattern<KeyPressEventArgs>(this, "KeyPress").Sample(500).....