Мое приложение не распознает нажатия клавиш, отправленные с SendKeys или SendInput, но распознает с клавиатуры - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть доморощенное приложение (Мастер), для которого определена куча горячих клавиш.Мне нужно автоматизировать приложение с помощью другого внешнего приложения (Control).Я не могу восстановить приложение Master, оно работает, уже установлено и не может быть испорчено.

Использование горячих клавиш на Master работает как чудо, если я использую клавиатуру.

Итак, я полагаю, я использую SendKeys.SendWait или SendKeys.Send для отправки команд.Хотя мой код отлично работает с другими приложениями (такими как Блокнот), он не работает с моим пользовательским приложением, Master.Это может быть по ряду причин - Master старше, имеет смешанные .NET, C ++ ... некоторые низкоуровневые элементы управления видео ... кто знает, что под прикрытием.

Мне нужно получить что-то более высокого уровня,Мне нужно иметь возможность отправлять нажатия клавиш, как если бы они исходили от самой клавиатуры.Я не хочу, чтобы компьютер мог различать физическую клавиатуру, отправляющую ключи, и мое приложение, посылающее ключи.

Что я могу использовать и чем он будет отличаться?

1 Ответ

0 голосов
/ 11 сентября 2011

Проблема не в SendKeys.

Я пробовал SendKeys.Send, SendKeys.SendWait, SendInput и keybd_event.

Позже я понял, что время между активацией приложения и временем отправки нажатий клавиш было слишком коротким. Я ждал 200 мс, но просто увеличив это значение до 500 мс, я решил свою проблему.

Приложение рисовалось долго из-за встроенных видеоплееров. Предоставление ему еще 300 мс позволило ему быть готовым к нажатиям клавиш, которые я посылал.

...