Sendkeys отправляет нет или несколько строк - PullRequest
1 голос
/ 11 января 2012

Я сделал клавиатуру в Windows. Формы с множеством кнопок, и их содержимое - это разные символы алфавита, как настоящая клавиатура.

Теперь проблема в том, что когда я использую клавиатуру в Windows 7, все работает отлично. Но когда я использую клавиатуру на сенсорном экране в Windows XP, клавиатура многократно записывает содержимое только что нажатой кнопки или ничего не пишет внутри текстового поля.

Вот пример кода:

Button temp = sender as Button;
SendKeys.SendWait(temp.Text);

Я пробовал SendKeys.Flush и

<appSettings>

<add key="SendKeys" value="SendInput"/>
</appSettings>

внутри app.config

что является решением здесь msdn . Но это не решило проблему.

Что я делаю не так?

Редактировать: Теперь я обнаружил, что первая буква всегда работает идеально. После этого все становится ужасно. Есть ли что-то еще, кроме SendKeys.Flush, которое я мог бы попробовать?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Вы теряете фокус после первой буквы ... сбросьте фокус на цель перед вызовом SendWait.

0 голосов
/ 28 февраля 2012

Функция sendkeys действительно не самая лучшая из функций.Использование winApi, а точнее PostMessage, окажется лучше.

Вот пример: PostMessage WM_KEYDOWN отправлять ключи умножения?

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

...