SWT:获得系统设备更改通知(USB设备连接/断开连接)

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

在本机环境中执行此操作的方法(在这种情况下为win32,但我最终应该与平台无关)是监听WM_DEVICECHANGE事件,然后检查我的设备是否已断开连接。

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

谢谢和欢呼

夏嘉曦

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

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

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

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

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

deviceAdded(Device dev) 

被解雇了

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

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

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