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

问题描述:

我正在编写一个SWT应用程序,它需要坐在系统托盘中并在用户连接某个USB设备时自动弹出(应用程序用作其控制面板)。SWT:获取系统设备更改通知(USB设备连接/断开)

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

使用Google搜索这个主题,似乎SWT实际上并没有处理这种类型的事件。有没有人有任何想法如何实现这一目标?我的备用解决方案将采样的USB端口每n秒,找设备,但是这是一个没有没有解决就我而言......

感谢和欢呼声

+0

一个jUSB端口窗口要清楚,你在谈论的标准部件工具包在Java中,对不对?如果是这样,请添加一个“Java”标签。或者你的意思是其他一些SWT? – Jegschemesch 2009-04-19 16:39:39

+0

没错。这对我来说是很自然的,我完全忘了添加最基本的:) – 2009-04-20 06:31:06

+0

最后,我已经解决了一个活跃的监听器,每n毫秒轮询一次USB驱动程序DLL。 – 2009-04-23 06:56:01

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

+0

我不需要USB连接 - 我正在使用与JNA连接的设备提供的DLL进行此操作。我需要听OS OS WM_DEVICE_CHANGED消息。 – 2009-04-22 14:34:03

编辑:J-16 SDiZ报道,API存在于Windows太

这是一个非常好的文章约Access USB devices from Java applications

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

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

特殊照顾SWT对象可以实现这个监听器和做一些事情,当方法

deviceAdded(Device dev) 

被激发

+0

据我所知,jUSB不支持win32,这是该应用程序应该支持的主要平台。 – 2009-04-22 14:34:47

您的Zorglub意见建议,你有一些(大概)JNI/JNA代码来调用您提到的第三方DLL。我假设你也可以写一个JNI包装器到Windows API,你可以在这里注册以获得所提到的_WM_DEVICECHANGE_事件的通知。