Я создал простое автономное Java-приложение (JAR), которое подключается к сканеру штрих-кода Honeywell через виртуальный COM-порт (используя библиотеки RxTx для настройки COM-соединения).
После подключения программа получает вход от сканера, преобразует его с помощью некоторой пользовательской логики и, наконец, перенаправляет преобразованный вывод в стандартный вывод, используя класс Robot .Ничего особо сложного.
Так что, если я запускаю программу и затем сканирую значение «A», приложение преобразует его в «B», и когда блокнот активен (или какое-либо другое поле ввода / программа), »B "выводится так, как если бы он был первоначально отсканирован сканером.
Эта программа отлично работает, когда запускается как файл JAR (или упаковочный файл bat).Однако при обёртывании этого файла JAR / BAT в качестве службы Windows (с использованием JSW Community Edition или YAJSW) программа будет работать идеально, , но не будет выводить «имитированные» нажатия клавиш, выполненные в Robot.class.
Я даже использовал библиотеки JNA с методом sendInput()
(в качестве замены для класса Robot), чтобы создавать нажатия клавиш как можно ближе к уровню ОС, как это возможно, но это также не сработало... Я также пытался сделать сервис интерактивным , но это тоже не сработало.В настоящее время у меня заканчиваются опции.
Итак, мой вопрос: правильно ли, что вы не можете генерировать события нажатия клавиатуры при работе в качестве службы Windows?Я мог бы предположить, что это может быть большой проблемой безопасности, и, возможно, поэтому это запрещено.
Любая обратная связь или возможное решение будет очень приветствоваться!Большое спасибо заранее!