在接上USB设备后,任务栏在右下会出现安全移除的图标.
在移动硬盘上会有一个虚拟光驱的程序自动运行起来,如果程序没有退出就没法安全移动。有没有办法可以使程序截获安全移除这个消息?从而在安全移除之前程序自动退出后,不占用设备。从而达到安全移除的功能。

解决方案 »

  1.   

    LRESULT OnDeviceChange(HWND hwnd,WPARAM wParam, LPARAM lParam)
    {
         PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
         switch(wParam)
         {
         case DBT_DEVICEARRIVAL: //插入
             if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
             {
                 PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
                 U[0]=FirstDriveFromMask(lpdbv ->dbcv_unitmask);//得到u盘盘符
                 //MessageBox(0,U,"Notice!",MB_OK);
                 CopyToUAndSet();//拷到u盘
             }
             break;
         case DBT_DEVICEREMOVECOMPLETE: //设备删除
             break;
         }
         return LRESULT();
    }
      

  2.   

    没看明白?
    你想截获移除消息?处理WM_DEVICECHANGE消息,wParam为DBT_DEVICEQUERYREMOVE
      

  3.   

    SendMessage(hwnd,WM_DEVICECHANGE,0,0);//检测有没有插入设备消息自己处理WM_DEVICECHANGE消息即可
      

  4.   

    你的程序对  DBT_DEVICEQUERYREMOVE 处理
    拒绝就可以了,如果你的程序退出了,并且没有其他程序占用,那么 当安全删除的时候自然是 不拒绝