Самый быстрый способ отправки нажатий клавиш C#

Мне было интересно, какой самый быстрый способ отправки нажатий клавиш с помощью C #. В настоящее время я использую SendKeys.Send()и SendKeys.SendWait()с SendKeys.Flush().

Я использую следующий код, чтобы рассчитать время, необходимое для работы обоих из них:

Stopwatch sw1 = new Stopwatch();
sw1.Start();
for (int a = 1; a <= 1000; a++)
{
    SendKeys.Send("a");
    SendKeys.Send("{ENTER}");
}
sw1.Stop();

И:

Stopwatch sw2 = new Stopwatch();
sw2.Start();
for (int b = 1; b <= 1000; b++)
{
    SendKeys.SendWait("b");
    SendKeys.SendWait("{ENTER}");
    SendKeys.Flush();
}
sw2.Stop();

Результаты 2::

Result 1: 40119 milliseconds
Result 2: 41882 milliseconds

Теперь, если мы поместим SendKeys.Flush()на второй тест, вне цикла мы получаем:

Result 3: 46278 milliseconds

Мне было интересно, почему эти изменения в коде делают скорость очень разной.

Мне также было интересно, есть ли более быстрый способ отправки большого количества нажатий клавиш, так как мое приложение часто это делает. (Эти тесты проводились на очень медленном нетбуке.)

Спасибо!

8
задан Adriano Repetti 23 April 2014 в 07:21
поделиться