Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Управление java приложеним из Delphi


Автор: JoKeR13 29.5.2012, 20:12
Здравствуйте уважаемые, прошу вашей помощи в реализации следующей задачи:
Есть оконное приложение написанное на java (.jar) (клиент для оракловой БД)
В ручную запускаем приложение, логинимся, видим editы, кнопочки и не интересующие элементы интерфейса.
Требуется из приложения delphi  взаимодействовать, (ввел текст в первый эдит, во второй, нажал кнопочку)
Я конечно реализовал это простейшим передвижением курсора кликами, и нажатиями контрл+в
Но хотелось бы найти handlы всех необходимых элементов интерфейса а затем с ними соответсвенно взаимодействовать, так, чтобы все работало при свернутом окне java приложения.
Все, что я смог на данный момент это получить handle главного окна (сворачивать, разворачивать)
Пробовал spy++, но что-то мне подсказывает, что с java он не дружит.
Я первый раз пишу подобное приложение, поэтому прошу сильно не пинать, а направить и подсказать!
Спасибо!

Автор: JoKeR13 31.5.2012, 07:29
Актуально :(

Автор: Snowy 31.5.2012, 13:57
В java приложениях только одно окно и есть - главное.
Все элементы внутри него нарисованы и не существуют для внешней системы, как самостоятельные элементы.
Так что единственный способ управления - эмуляция нажатий клавиш и мыши.

Автор: JoKeR13 31.5.2012, 17:31
Спасибо так и думал, но надеялся, что есть другие варианты решения проблемы!

Автор: JoKeR13 31.5.2012, 21:29
А есть ли варианты взаимодействия через оперативную память? Замена значений эдитов хранящихся в памяти, особенно это былобы хорошо еслибы вдруг адрес в памяти был постоянным и его не приходилось бы программно каждый раз находить.
Спасибо!
 smile    

Автор: Amp 31.5.2012, 21:54
Даже если бы ты узнал адрес. В Java работает сборщик мусора - в свете этого не ясно имеет ли смысл лезть в память процесса. Можно либо прочесть совершенно не то, либо записать не туда, уронив при этом JVM с приложением. А если вдруг звезды сошлись и ты удачно поменял значение, то контрол не узнает об этом до следующей перерисовки, а когда это произойдет - зависит уже от логики программы.

Автор: JoKeR13 1.6.2012, 11:07
В общем оснований чтобы не попробовать не вижу, посему отпишусь о результатах, лучше так, чем кликать мышью!

Автор: JoKeR13 4.6.2012, 09:47
Через память в принципе реализуемо, но возникают новые проблемы, посему решил все таки не изобретать велосипед :(( а так хотелось...

Автор: JoKeR13 4.6.2012, 10:52
Можно считать решенным

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)