我正在编写一个SWT应用程序,它需要放在系统托盘中,并在用户连接某个USB设备时自动弹出(该应用程序用作其控制面板)。
在本机环境中执行此操作的方法(在这种情况下为win32,但我最终应该与平台无关)是侦听WM_DEVICECHANGE事件,然后检查我的设备是否已断开连接。
Google搜索主题,似乎SWT实际上并不处理此类事件。有没有人知道如何实现这一目标?我的后备解决方案是每隔n秒对USB端口进行采样,寻找设备,但就我而言,这是一个禁止解决的问题......
谢谢和欢呼
晒
答案 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)