Zhivko Kabaivanov Ответов: 1

Как динамически заполнять формы в стороннем приложении?


Знание темы: C / C++, Windows API, C# и что-то в этом роде.

У меня есть приложение, написанное на C#. Мы назовем его A. приложение A использует Windows API для имитации нажатия клавиш клавиатуры (TAB, некоторый текст, SHIFT) с помощью SendInput (ссылкаМогу отметить, что при использовании этого метода моделирования в таких приложениях, как блокнот, Chrome работает без каких-либо проблем.

Приложение B, которое должно быть заполнено путем имитации ключей, написано на C/C++, но я не знаю, какая версия и детали. Если и есть что-то знакомое, то это Микрос Фиделио.

Проблема заключается в том, что при моделировании клавиш TAB из приложения A, приложение B останавливается, застревает, не обнаруживает нажатие клавиши TAB. Даже при физическом нажатии клавиши TAB курсор не перемещается из своего текущего положения. Только после того, как несколько ключевых пропуска. Еще одна вещь, которая происходит, это сочетания клавиш, такие как Alt + N, также иногда не работают, а иногда работают. Есть ли какой-нибудь буфер с имитированными ключами, и когда вы заполняете этот буфер, вы не можете выполнить следующий толчок?



Мой вопрос заключается в том, есть ли у кого-нибудь способ решить проблему пропуска вкладок?

Что я уже пробовал:

Я пробовал задержку между вкладками 100, 250, 500 мс, но они все равно обнаруживают.

То, что я заметил:
* при перезапуске приложения в симуляция работает, но через определенный промежуток времени она снова накапливается и начинает обнаруживаться
* когда язык клавиатуры переключается на кириллицу, сочетания клавиш не работают и написание кириллического текста гаснет - ?????

У меня есть тест также AutoHotKey, и там тоже есть проблема.

Richard MacCutchan

Проверьте исходный код приложения B, чтобы узнать, почему оно не отвечает.

Zhivko Kabaivanov

у меня нет исходного кода приложения B

BillWoodruff

Можете ли вы взять "другое приложение" и успешно отправить в него ключевые события ?

Zhivko Kabaivanov

Что ты имеешь в виду?

Gerry Schmitz

Как весело! Ради бога, скажите, что должно делать приложение "Б". Может быть, что-то веселое вроде блокнота для создания текстового файла?

1 Ответов

Рейтинг:
0

RickZeeland

Может быть, эти статьи будут полезны: https://dzone.com/articles/sending-keys-other-apps[^]
и: Отправка нажатий клавиш в другое приложение на языке Си#[^]

Другим вариантом может быть использование такого инструмента автоматизации, как программа AutoHotkey, смотрите обзор здесь: https://www.slant.co/topics/2195/~для GUI-автоматизация-инструменты-для-окон[^]


Zhivko Kabaivanov

есть ли другая альтернатива отправке нажатий клавиш?