【问题标题】:How to store and resend keyboard input for UI automation?如何为 UI 自动化存储和重新发送键盘输入?
【发布时间】:2009-06-25 21:26:03
【问题描述】:

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

public void TextBox_KeyDown(KeyEventArgs e)
{
    Script.AddStatement(string.Format("SendKeys.Send('{0}')", ????));
}

我是否必须手动从 KeyEventArgs 创建一个 SendKeys 可以理解的字符串?
例如 shift+A,shift+B 变为 SendKeys.Send("+(AB)")。详情来自MSDN

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

【问题讨论】:

  • Script是什么类型的?
  • 什么是 SendKeys.Send() 期望作为参数?也许 (char)e.KeyCode 已经很好了...

标签: c# winforms ironpython


【解决方案1】:

这个问题的答案是停止使用 SendKeys,而是使用 p/invoke of keybd_event。 SendKeys 存在计时问题和其他意外行为。

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2012-06-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多