5

我正在编写一个 SWT 应用程序,它需要放在系统托盘中,并在用户连接某些 USB 设备时自动弹出(该应用程序用作其控制面板)。

在本机环境(本例中为 win32,但我最终应该独立于平台)中执行此操作的方法是监听 WM_DEVICECHANGE 事件,然后检查我的设备是否已断开连接。

谷歌搜索这个主题,看起来 SWT 实际上并没有处理这种类型的事件。有谁知道如何实现这一目标?我的后备解决方案是每 n 秒对 USB 端口进行采样,寻找设备,但就我而言,这是一个不可行的解决方案......

谢谢和欢呼

4

4 回答 4

1

编辑:J-16 SDiZ 报告说该 API 也适用于 Windows

这是一篇关于从 Java 应用程序访问 USB 设备的非常好的文章

所描述的 jUSB 模块包含一个USBListener对象。

由要监视 USB 结构的对象实现的接口。报告这些变化的顺序不一定是在现实世界中看到这些变化的顺序,也会出现延迟。

你的 SWt 对象可以实现这个监听器并做一些事情,当方法

deviceAdded(Device dev) 

被解雇

于 2009-04-22T13:57:33.540 回答
0

Java 不提供与设备和 USB 的直接交互。有几个 Java 第三方库提供 USB 相关功能(从 USB 端口读/写)。例如: http: //www.icaste.com/(商业)

于 2009-04-22T13:49:15.183 回答
0

在http://www.steelbrothers.ch/jusb/有一个用于 windows 的 jUSB 端口

于 2009-04-24T08:18:48.880 回答
0

您对Zorglub的评论表明您有一些(大概)JNI/JNA 代码来调用您提到的第 3 方 DLL。我假设您还可以将 JNI 包装器写入 Windows API,您可以在其中注册以接收您提到的 _WM_DEVICECHANGE_ 事件的通知。

于 2009-04-22T20:08:47.080 回答