Java-клиент на экране - PullRequest
       20

Java-клиент на экране

0 голосов
/ 02 декабря 2011

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


Клиент - это программа, которой я не должен манипулировать напрямую, и я не писал ее.Так что это сторонняя компания. Для простоты, скажем, у клиента есть область, которая переключает цвет между красным и зеленым, красный означает проблемы, а зеленый означает, что все в порядке.
Программа, работающая в фоновом режиме, использует клиента в качестве механизма триггераЭто означает, что если клиент показывает КРАСНЫЙ.Я не должен что-то делать, и если он показывает зеленый цвет, я должен (поэтому мне нужно только выяснить, является ли цвет в определенном месте клиента красным или нет.

Сравнение:

Робот:
-Легко реализовать?
- Придаст ли пользователю больше уверенности в том, что я не краду его информацию.

Запуск обеих программ в одной и той же виртуальной машине:
-Более профессиональный
-Я могу отслеживать клинт, не просматривая все пиксели окна
- Окно не будет «скрываться» другими программами
- Когда окно перемещается, мне не нужно повторять итерацию, чтобы найти его снова.

Плохо:
Робот:
- Итерации могут занять некоторое время
-Имеется итерация при каждом перемещении javaclient.
Запуск обеих программ на одной и той же виртуальной машине:
-Программа потребует дополнительной настройки и установки других «вещей» (я хочу что-то легкое и быстрое в использовании)

Не стесняйтесь комментировать эффективность, другие варианты или давать мне кусочки для этих двух вариантов.

Спасибо (я решил продолжать пробовать использовать Java вместо C / C ++, потому что возможные пользователи могут запускать другие ОС, кроме Windows)

1 Ответ

1 голос
/ 02 декабря 2011

Вместо того, чтобы снимать скриншот, почему бы не получить список процессов или окон? Вы можете использовать «EnumWindows» или «EnumProcesses» в Windows с JNI или JNA. Для Linux "ps" возвращает список процессов. Кроме того, вы можете использовать модель клиент-сервер и позволить вашему клиенту «пинговать» ваш сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...