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

时间:2009-04-19 15:26:02

标签: java event-handling usb swt

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

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

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

谢谢和欢呼

4 个答案:

答案 0 :(得分:1)

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

这是一篇关于Access USB devices from Java applications

的非常好的文章

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

  

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

当方法

时,你的SWt对象可以实现这个监听器并做一些事情
deviceAdded(Device dev) 

被解雇

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

http://www.steelbrothers.ch/jusb/

的窗口有一个jUSB端口