I have an application (.Net Compact Framework 3.5) running on a Windows Mobile 6.1 device and I want to detect when the USB connection changes (either something connects or disconnects).
I was originally using the SystemProperty.CradlePresent
property to trigger an event but I am wondering if this only works if the device connecting has ActiveSync? I will be receiving a connection via USB from a Linux device that does not have ActiveSync running on it.
Can I still use SystemProperty.CradlePresent
to detect the connect/disconnect from the USB? Or do I need to explore other options to detect the USB event? Thanks.
Perhaps this previous question of mine may help:
How can I detect a USB disconnect event? (Windows, .NET C# application)
I ended up listening for and handling WM_DEVICECHANGE
events. They are specified here: http://msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx
Unfortunately I don't have a copy of the source code anymore so my memory on it is a bit hazy. I don't know if this solution applies in your context.
Check this out, you might be able to grab part of the source code. Its written in C# with a GUI. Keep in mind every time you have a program running that is checking for new USB drives, it will take up memory and CPU so you might want to tone down the intervals at which it checks and then supply a "refresh" button for impatient users.
来源:https://stackoverflow.com/questions/5411454/detecting-usb-connection-c-sharp-net-cf-3-5