Как сохранить и повторно отправить ввод с клавиатуры для автоматизации пользовательского интерфейса? - PullRequest
0 голосов
/ 26 июня 2009

У меня есть приложение 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 и как-нибудь отправить его?

1 Ответ

0 голосов
/ 05 августа 2009

Ответом на этот вопрос было прекращение использования SendKeys и использование p / invoke keybd_event. У SendKeys есть проблемы с синхронизацией и другое непредвиденное поведение.

...