在C#中发送密钥“挂起”PC

当我在Form_Shown() send key并将Breakpoint放在Form_KeyDown()时,我的PC挂起

  private void Form1_KeyDown(object sender, KeyEventArgs e) { //breakpoint here if (e.KeyCode == Keys.A) { MessageBox.Show("caught"); } } private void Form1_Shown(object sender, EventArgs e) { SendKeys.Send("A"); } 

我责备,Win7和VS2008。 这看起来像一个相当令人讨厌的死锁,你可以通过按键盘上的Ctrl + Esc离开它。 默认情况下,SendKeys使用Windows挂钩来注入密钥。 Windows挂钩可能会产生相当不愉快的副作用,但我会毫不犹豫地将其称为Windows错误。

要解决此问题,请使用Project + Add New Item并选择Application Configuration File项目模板。 看起来像这样:

       

如果这真的是为了向您的表单发送击键,那么有更好的方法来实现它。