Я использую java.awt.Robot
для отправки событий мыши в системе Windows 7 (64-разрядная).Это в основном для преобразования сенсорных событий в ввод мышью.Чтобы пользователи могли вводить символы в приложениях, я планировал повторно использовать встроенную экранную клавиатуру Windows (osk.exe).
Однако я наткнулся на загадку.Любое событие нажатия мыши, генерируемое Robot
, которое происходит, когда курсор находится над украшением окна окна OSK (строка заголовка, системное меню и т. Д.), Останавливает мышь.Кажется, обрабатывается только событие нажатия кнопки мыши, так как я вижу, как OSK получает фокус.Robot
продолжает отправлять другие события мыши, но они не влияют на окно OSK.Единственный выход - нажать / отпустить физическую USB-мышь, подключенную к системе.
Странно то, что использование OSK для ввода символов путем отправки нажатий мыши на клавиши клавиатуры OSK из Robot
работает нормально,Просто попытка переместить (или закрыть) окно OSK останавливает обработку мыши.
Я видел несколько других вопросов об OSK и событиях, указывающих на то, что OSK является чем-то вроде специального приложения.Но мне интересно, в чем разница между событиями мыши, генерируемыми Robot
, и событиями от мыши USB, поскольку OSK по-разному реагирует на них и Robot
предположительно генерирует собственные события?