VC识别有USB存储设备插入

我们平时会遇到要知道是否有存储设备的插入的情况,以下提供两种方法:

第一种方法:

      在MFC中为开口添加WindowProc消息相应函数,例如:

      LRESULT CMyDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
      {
         switch(message)   
         {   
         case WM_DEVICECHANGE: 
              char t;
              for(t='c';t<'z';t++)
              {
                 CString str;
                 str.Format(_T("%c"),t);
                 str+=":\\";
                 if(GetDriveType(str)==DRIVE_REMOVABLE)
                 {
                    AfxMessageBox(_T("U盘插入或拔出!"));
                 }
              }
              break;  
             }
         return CDialog::WindowProc(message, wParam, lParam);
      } 

      这种方法不够精确,因为插入和拔出都会同时

第二种方法:

      可以通过ACtivex控件(Microsoft SysInfo Control)来获知有存储设备插入。

      现在窗口中添加一个Microsoft SysInfo Control的对象,然后添加DeviceArrival消息函数

      例如:

      void CMyDlgDlg::OnDeviceArrivalSysinfo1(long DeviceType, long DeviceID, LPCTSTR DeviceName, long DeviceData)
      {
         AfxMessageBox(_T("U盘插入!"));
         //在此可以添加对存储设备的操作。
      }

      这种方法比较实用。

原文地址:https://www.cnblogs.com/pbreak/p/1771454.html