检测USB连接 – C#.Net CF 3.5

我有一个在Windows Mobile 6.1设备上运行的应用程序(.Net Compact Framework 3.5),我想检测USB连接何时发生变化(连接或断开连接)。

我最初使用SystemProperty.CradlePresent属性来触发事件,但我想知道这是否只有在设备连接有ActiveSync时才有效? 我将通过USB从没有运行ActiveSync的Linux设备接收连接。

我还可以使用SystemProperty.CradlePresent来检测USB的连接/断开吗? 或者我是否需要探索其他选项来检测USB事件? 谢谢。

也许我之前的这个问题可能有所帮助:

如何检测USB断开事件? (Windows,.NET C#应用程序)

我最终收听并处理了WM_DEVICECHANGE事件。 它们在这里指定: http : //msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx

不幸的是我没有源代码的副本了,所以我对它的记忆有点朦胧。 我不知道这个解决方案是否适用于您的上下文。

看看这个 ,你可能会抓住部分源代码。 它用C#编写,带有GUI。 请记住每次运行正在检查新USB驱动器的程序时,它将占用内存和CPU,因此您可能需要调低其检查的时间间隔,然后为不耐烦的用户提供“刷新”按钮。