Требуется надежное решение SendKeys

Я пытаюсь написать приложение, которое может надежно отправлять нажатия клавиш в другое приложение.

Во втором приложении есть текстовое поле, которое открывается при нажатии 9. Затем можно ввести текст, а затем текстовое поле закрывается при нажатии Enter.

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

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

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

Я продолжу поиск и, если найду, напишу здесь решение!


person CompanyDroneFromSector7G    schedule 06.07.2015    source источник
comment
выберите ответ, чтобы сказать, можно ли это закрыть. Держите SO в чистоте, и давайте не будем завышать количество оставшихся без ответа вопросов.   -  person Krishna    schedule 07.07.2015


Ответы (1)


это возможность вызывать экранную клавиатуру, предоставляемую os. ваше приложение, вызывающее приложение, потеряет или не сможет отслеживать ключевые события, однако, если вы откроете свое второе приложение и вызовете osk.exe, тогда цель надежной отправки клавиш с клавиатуры в приложение может быть выполнена. Я объяснил это здесь

РЕДАКТИРОВАТЬ: игнорирование экранной клавиатуры

Вы можете попробовать использовать RegisterHotKey для откройте текстовую панель для определенной последовательности клавиш и сохраните дескриптор в переменной экземпляра. По последовательности вторых горячих клавиш вы можете закрыть текстовую панель (вы уже знаете дескриптор)

есть видео, объясняющее это

person Krishna    schedule 06.07.2015
comment
не то, чтобы это имело такое большое значение, а то, что минусует без комментариев. PS. Я имел в виду что (не кого) :) - person Krishna; 06.07.2015
comment
Я предполагаю, что один и тот же человек проголосовал за мой вопрос и ваш ответ. Голосование против без комментария о том, почему просто демонстрирует их невежество, а не отсутствие качества в вашем вкладе. +1, чтобы отменить голосование без комментариев. - person CompanyDroneFromSector7G; 06.07.2015
comment
давайте игнорировать эти вещи. на вопрос, это вариант? - person Krishna; 06.07.2015
comment
Мне не нужна экранная клавиатура, я просто хочу отправить нажатие 9 клавиш, чтобы открыть текстовое поле, отправить определенный текст в текстовое поле, а затем отправить нажатие клавиши ввода, чтобы закрыть текстовое поле. - person CompanyDroneFromSector7G; 06.07.2015