SWT: получение уведомлений об изменении системного устройства (подключение / отключение USB-устройства) - PullRequest
5 голосов
/ 19 апреля 2009

Я пишу SWT-приложение, которое должно находиться в системном трее и автоматически выскакивать всякий раз, когда пользователь подключает какое-либо USB-устройство (приложение служит его панелью управления).

Способ сделать это в собственной среде (в данном случае win32, но в конечном счете я должен быть независимым от платформы) - прослушать событие WM_DEVICECHANGE, а затем проверить, было ли мое устройство отключено.

Погуглив тему, кажется, что SWT на самом деле не обрабатывает события такого типа. У кого-нибудь есть идеи относительно того, как этого добиться? Моим резервным решением будет выборка USB-порта каждые n секунд в поисках устройства, но это, на мой взгляд, решение "нет-нет" ...

Спасибо и ура

Шай

Ответы [ 4 ]

1 голос
/ 22 апреля 2009

РЕДАКТИРОВАТЬ: J-16 SDiZ сообщил, что API существует и для Windows

Вот очень хорошая статья о Доступе к USB-устройствам из приложений Java

Описанный модуль jUSB содержит объект USBListener .

Интерфейс, реализованный объектами, которые хотят отслеживать структуру USB. Порядок, в котором сообщается об этих изменениях, не обязательно будет тем порядком, в котором эти изменения были замечены в реальном мире, и также происходят задержки.

Ваш объект SWt может реализовать этот слушатель и что-то сделать, когда метод

deviceAdded(Device dev) 

уволен

0 голосов
/ 24 апреля 2009

Есть порт jUSB для Windows на http://www.steelbrothers.ch/jusb/

0 голосов
/ 23 апреля 2009

Ваш комментарий для Zorglub предполагает, что у вас есть некоторый (предположительно) код JNI / JNA для вызова сторонней DLL, которую вы упомянули. Я предполагаю, что вы также можете написать оболочку JNI для Windows API, где вы можете зарегистрироваться, чтобы получать уведомления о упомянутом вами событии _WM_DEVICECHANGE_.

0 голосов
/ 22 апреля 2009

Java не обеспечивает прямого взаимодействия с устройствами и с USB. Существует несколько сторонних библиотек для Java, которые предоставляют функции, связанные с USB (чтение и запись с порта USB). Например: http://www.icaste.com/ (коммерческий)

...