日期:2014-05-17  浏览次数:21468 次

监听USB插入拔出事件
USB拔插事件,最好能判断出插入的设备是否为手机
试过以下方法未果
1:重写WndProc,能获取到0x0007(Device List _Changed)但是这种插入后会执行几次事件
2:http://bbs.csdn.net/topics/390670533  这种方法能获取USB的变化,当USB类型为U盘的时候可以,但是当为手机的时候,不行

找解决办法

------解决方案--------------------
帮你顶一下!建议你去C/C++专区,处理这类设备问题应该说底层一点的语言更方便。
------解决方案--------------------

const int DBT_DEVICEARRIVAL = 0x8000;
const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
protected override void WndProc(ref Message m)
{
    try
    {
        int i =m.WParam.ToInt32();
        switch (i)
        {
            case DBT_DEVICEARRIVAL: 
                DriveInfo[] s = DriveInfo.GetDrives();
                foreach (DriveInfo drive in s)
                {
                    if (drive.DriveType == DriveType.Removable)
                    {
                        MessageBox.Show("USB插入");
                        break;
                    }
                }
                break;
            case DBT_DEVICEREMOVECOMPLETE: 
                //
                MessageBox.Show("USB卸载");
                break;
            default:
                break;