Sendkeys不发送或多个字符串

时间:2012-01-11 07:57:30

标签: c# winforms on-screen-keyboard

我在Windows.Forms中制作了一个带有许多按钮的键盘,它们的内容就像字母一样,是真正的键盘。

现在的问题是,当我在Windows 7中使用键盘时,一切都运行良好。但是当我在Windows XP的触摸屏上使用键盘时,键盘会多次写入我刚按下的按钮的内容,或者不会在文本框内写入任何内容。

以下是一些示例代码:

Button temp = sender as Button;
SendKeys.SendWait(temp.Text);

我尝试过SendKeys.Flush和

<appSettings>

<add key="SendKeys" value="SendInput"/>
</appSettings>

在app.config

这是msdn的解决方案。但它没有解决问题。

我做错了什么?

编辑:现在我发现第一封信总是完美无缺。之后一切都变得糟透了。除了SendKeys.Flush之外还有什么可以尝试的吗?

2 个答案:

答案 0 :(得分:2)

在第一个字母后你失去焦点...在调用SendWait之前将焦点重置为目标。

答案 1 :(得分:-1)

sendkeys函数确实不是最好的函数。 使用winApi,更具体地说PostMessage将证明更好。

以下是一个示例:PostMessage WM_KEYDOWN send multiply keys?

您将更直接地使用消息Queue,但这也意味着您将不得不处理额外的事情,例如布局/本地化。