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

如何用VC++控制多光驱(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
{ DriveTemp=1; DriveNum++; }; for(itemp=4; itemp=DriveNum;itemp++) { switch(itemp) { case 4: DriveItem="D:"; break; case 5: DriveItem="E:"; break; case 6: DriveItem="F:"; break; case 7: DriveItem="G:"

  {
  DriveTemp>>=1;
  DriveNum++;
  };
  for(itemp=4; itemp<=DriveNum;itemp++)
  {
  switch(itemp)
  {
  case 4:
  DriveItem="D:";
  break;
  case 5:
  DriveItem="E:";
  break;
  case 6:
  DriveItem="F:";
  break;
  case 7:
  DriveItem="G:";
  break;
  ...
  case 26:
  DriveItem="Z:";
  }
  IsLogicalCDROM=GetDriveType(DriveItem);
  if (IsLogicalCDROM==DRIVE_CDROM) //获得光驱数目
  {
  CDName[CDS]=DriveItem;
  CDS++;
  }
  }

  以上的代码仅仅是个框架,只能获得光驱数,但是大家只要作稍微的改动就可以实现不同的功能,比如将光驱盘符动态的加入菜单等等。而且由于是API函数,所以以上的算法能被VB、DELPHI使用。通过以上的技术与MCI相结合,就可以轻而易举的制作出支持多光驱的CD播放器以及VCD播放器等。例如使用MCI命令控制多个光驱的弹出关闭:

  //例子:弹出光驱F CDRomOpen(TRUE,'F')
  // 关闭光驱F CDRomOpen(FALSE,'F')
  void CDRomOpen(BOOL bOpenDrive,TCHAR cDrive)
  {
  MCI_OPEN_PARMS open;
  MCI_STATUS_PARMS status;
  DWORD flags;
  TCHAR szDriveName[4];
  strcpy(szDriveName,"?:");
  ::ZeroMemory(&open,sizeof(MCI_OPEN_PARMS));
  open.lpstrDeviceType=(LPCSTR)MCI_DEVTYPE_CD_AUDIO;
  szDriveName[0]=cDrive;
  open.lpstrElementName=szDriveName;
  flags=MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_OPEN_ELEMENT| MCI_OPEN_SHAREABLE;
  if(!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&open))
  {
  status.dwItem=MCI_STATUS_READY;
  if(bOpenDrive) mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);
  else mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);
  mciSendCommand(open.wDeviceID,MCI_CLOSE,MCI_WAIT,0);
  }
  }

精彩图集

赞助商链接