C# 如何为UI自动化存储和重新发送键盘输入?

C# 如何为UI自动化存储和重新发送键盘输入?,c#,winforms,ironpython,C#,Winforms,Ironpython,我有一个winforms应用程序,需要在其中捕获键盘输入并将其存储在脚本中。然后可以使用IronPython重放该脚本,以实现应用程序的自动化。我目前的做法是监听按键事件,并使用SendKeys.Send()重新发送按下的字符。要使用修饰符(alt、ctrl)处理输入,我会监听KeyDown事件,但在这里我不知道如何表示脚本中按下的键。这就是我想做的: public void TextBox_KeyDown(KeyEventArgs e) { Script.AddStatement(st

我有一个winforms应用程序,需要在其中捕获键盘输入并将其存储在脚本中。然后可以使用IronPython重放该脚本,以实现应用程序的自动化。我目前的做法是监听按键事件,并使用SendKeys.Send()重新发送按下的字符。要使用修饰符(alt、ctrl)处理输入,我会监听KeyDown事件,但在这里我不知道如何表示脚本中按下的键。这就是我想做的:

public void TextBox_KeyDown(KeyEventArgs e)
{
    Script.AddStatement(string.Format("SendKeys.Send('{0}')", ????));
}
我是否必须手动从SendKeys理解的KeyEventArgs创建字符串?
例如shift+A,shift+B变成SendKeys.Send(“+(AB)”)。详细信息来自


还有别的办法吗?也许要存储KeyEventArgs.KeyData并创建一个新的KeyEventArgs实例并以某种方式发送它

这个问题的答案是停止使用SendKeys,而是使用keybd_事件的p/invoke。SendKeys有计时问题和其他未执行的行为。

脚本是哪种类型的?SendKeys.Send()应作为什么参数?也许(char)e.KeyCode已经可以使用了。。。