SendKeys, сочетание Ctrl+A не всегда срабатывает, как бороться?

Рейтинг: 0Ответов: 1Опубликовано: 05.10.2014

Доброго времени суток.

В блоке кода:

// Нажимаем Tab
SendKeys.SendWait("{TAB}");
// Задержка
Thread.Sleep(200);
// Отправляем Ctrl+A
SendKeys.SendWait("^(a)");
// Задержка
Thread.Sleep(200);
// Отправляем Delete
SendKeys.SendWait("{DELETE}");
// Задержка
Thread.Sleep(200);

через раз срабатывает сочетание клавиш Ctrl+A: SendKeys.SendWait("^(a)");

С чем это может быть связано? Как с этим бороться?

p.s. дело не в задержке.

Ответы

▲ 2Принят

Вот этот пример использует

SendKeys.SendWait("^{HOME}");   // Move to start of control
SendKeys.SendWait("^+{END}");   // Select everything
SendKeys.SendWait("{DEL}");     // Delete selection

Это, конечно, лишь workaround, но поскольку неясно, на что именно полагается целевая программа для того, чтобы отличить A от Ctrl-A (например, на GetKeyState?), без перебора вариантов и поиска работающего, хоть и теоретически ненадёжного, боюсь, не обойтись.