| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Передача текста другому приложению |
| Автор: AndreyZ53 26.10.2016, 15:46 |
| Здравствуйте! Есть задача, необходимо передать текст в другое приложение. В общем надо заполнить форму ввода логина и пароля в сторонней программе. То есть, сначала надо вставить логин в поле логин, а затем вставить пароль в поле пароль (перед этим TAB-ом необходимо перейти на поле). Все хорошо вроде бы у меня получается через SendMessage, в блокноте все отлично работает во всех Windows окнах, но вот как только дело доходит до приложения, написанного на Java, то все, ничего не происходит. в Панеле управления имеется пункт Java, так вот открываю его делаю активным какое-нибудь текстовое поле и ничего не происходит, а вот в блокноте том же самом все замечательно. Может кто подскажет, как реализовать, мне без разницы: эмуляция нажатия клавиши, вставка из буфера, главное чтобы проблема решалась хоть как |
| Автор: kami 28.10.2016, 20:33 |
| в отличие от "православных" виндовых приложений, java -приложение не имеет ничего типа контролов-полей ввода и т.п. По сути java-приложение это одно окно (общее) а всё остальное (включая поля ввода) - просто нарисованная на нем картинка. Поэтому SendMessage вряд ли сработает. Попробуйте использовать более низкоуровневый https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396. |
| Автор: AndreyZ53 31.10.2016, 13:27 |
| kami, Спасибо за помощь Проблему решил при помощи эмуляции нажатия клавиш, при помощи процедуры keybd_event С Java-приложениями только так, поэтому кто будет ломать голову, то делайте сразу эмуляцию нажатия клавиш, как сказал товарищ kami, у приложении Java нет контролов, одно главное окно, это можно посмотреть, например при помощи Microsoft Spy++ и сравнить приложение Java и тот же Блокнот. |
| Автор: kami 4.11.2016, 23:18 |
Зря. Она устарела и не рекомендуется к использованию. Ее заменила как раз рекомендованная вам SendInput. |
| Автор: Poseidon 8.11.2016, 10:26 |
| kami, я чисто для себя, любопытно просто, как тогда java -приложение разруливает в какую часть этой картинки необходимо писать текст? |
| Автор: Poseidon 11.11.2016, 18:04 | ||
Это все понятно, но ведь при получении Win-сообщения окном Java (и FireMonkey) знают же по каким координатам и что писать. Это явно передается в сообщении. Почему бы не сэмулировать подобное сообщение и не "сказать" Java, что "вот в твоем окне вот по таким вот координатам надо написать вот это". Windows же это как-то делает, и делает это явно через WinMessages. |
| Автор: kami 11.11.2016, 21:28 | ||
Вообще-то да... Послать WM_KEYXXX ума много не надо |