发送密钥“挂起” C# 中的电脑
当我在 Form_Shown()
中发送密钥
并在 Form_KeyDown()
处放置断点
时,我的电脑挂起
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");
}
My PC hangs when I send key
in Form_Shown()
and placing Breakpoint
at Form_KeyDown()
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");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我重现了,Win7和VS2008。这看起来像是一个相当令人讨厌的死锁,您可以通过按键盘上的 Ctrl+Esc 来摆脱它。默认情况下,SendKeys 使用 Windows 挂钩来注入密钥。 Windows 挂钩可能会产生相当令人不快的副作用,但我会毫不犹豫地将其称为 Windows 错误。
要修复此问题,请使用“项目”+“添加新项”并选择“应用程序配置文件”项模板。让它看起来像这样:
如果这确实是为了将击键发送到您的表单,那么有更好的方法来实现这一点。
I repro, Win7 and VS2008. That looks like a fairly nasty deadlock, you can get out of it by pressing Ctrl+Esc on the keyboard. By default, SendKeys uses a windows hook to inject the keys. Windows hooks can have fairly unpleasant side effects but I wouldn't hesitate to call this a Windows bug.
To fix it, use Project + Add New Item and select the Application Configuration File item template. Make it look like this:
If this is really meant to send a keystroke to your form then there are better ways to accomplish that.