龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC实现自动监测光驱状态的改变(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//当一个设备变得被移走并变得不可用时, //系统会发送广播事件DBT_ DEVICEREMOVECOMPLETE case DBT_DEVICEREMOVECOMPLETE: // 判断CDROM碟片是否从光驱中移走 if (lpdb - d

    //当一个设备变得被移走并变得不可用时,
    //系统会发送广播事件DBT_ DEVICEREMOVECOMPLETE

    case DBT_DEVICEREMOVECOMPLETE:
     // 判断CDROM碟片是否从光驱中移走
     if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME) {
      PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
      if (lpdbv -> dbcv_flags & DBTF_MEDIA)
      {
       //显示消息,获取光驱的逻辑驱动器号
       wsprintf (szMsg, "驱动器 %c: 已经弹出 ",chFirstDriveFromMask(lpdbv ->dbcv_unitmask));
       MessageBox (hwnd, szMsg, "光驱自动监测", MB_OK| MB_ICONINFORMATION);
      }
     }
     break;
    }
    //处理其他Windows消息
   case WM_COMMAND:
    int wmId, wmEvent;
    wmId = LOWORD(wParam);
    wmEvent = HIWORD(wParam);
    switch (wmId)
    {
     case IDOK:
      EndDialog(hwnd, 0);
      break;
    }
   default:
    fRet = FALSE;
    break;
  }
  // 禁止光驱的AutoPlay功能
  static UINT uMsgQueryCancelAutoPlay=RegisterWindowMessage("QueryCancelAutoPlay");
  if (uMsg==uMsgQueryCancelAutoPlay)
  {
   int n = MessageBox(hwnd, "你想禁止AutoPlay功能吗?", NULL,MB_YESNO | MB_ICONQUESTION);
   // 1代表取消 AutoPlay
   // 0 t代表允许AutoPlay
   SetDlgMsgResult(hwnd, uMsg, (n == IDYES) ? 1 : 0);
   fRet = (n == IDYES) ? 1 : 0;
  }
  return(fRet);
}

  第三个函数非常简单,产生一个模式对话框。代码如下:

int APIENTRY WinMain
(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
 //从对话框模版资源中创建一个模式对话框
 DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL, DlgProc);
 return 0;
}

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接