如何用VC++控制多光驱(2)
{
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);
}
}
- 上一篇:VC常用编程经验
- 下一篇:VC实现Win2000下屏蔽Ctrl+Alt+Del键