if(StatusParms.dwReturn==MCI_MODE_OPEN¦¦StatusParms.dwReturn==MCI_MODE_NOT_READY)
解决方案 »
- Lsp分层提供服务者问题
- 请问,哪里有高效的直接操作扇区的fat16/32的碎片整理程序源代码或思路?谢谢!
- MFC程序GDI耗尽,windows无法解决?
- 请问:VC6中有没有在对话框上直接画线的控件?
- 请问atl做的activex控件怎样响应容器的mouse点击操作啊,我是老菜
- 关于Socket连接编程
- 郁闷!Not all windows in worksapce could be opened?
- CPP的入口函数是什么?
- 大家的vc有没有这样的奇怪问题?
- Listview中的ITEM覆盖了背景图案,请您帮忙
- 怎样删除一个为对话框定义的类,而不删除对话框本身?
- 那位寂寞高手知道如何在VC++6.0上进行延时操作,为何用::timeGetTime()函数时显示"...not a global name space..."
代码如下:
unsigned int wDeviceID;
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType = (LPOLESTR) MCI_DEVTYPE_CD_AUDIO;
OpenParms.wDeviceID = 0;
OpenParms.lpstrElementName = wpath; //光驱的盘符 如:“G:\"
mciSendCommandA (NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE, (DWORD)(LPVOID) &OpenParms);wDeviceID = OpenParms.wDeviceID;mciSendCommand (wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, NULL);
//关闭用 MCI_SET_DOOR_CLOSE;
mciSendCommand (wDeviceID, MCI_CLOSE, MCI_WAIT, NULL);
有两种方法,分别使用mcisendcommand, mcisendstring1. 使用mcisendcommand
mcideviceid mciid;mci_open_parms openparms;//光驱的设备名
openparms.lpstrdevicetype = "cdaudio";//打开此设备
mcisendcommand (null, mci_open, mci_wait | mci_open_type,
(dword) &openparms);//得到设备id
mciid = mcigetdeviceid(openparms.lpstrdevicetype);//打开光驱门
//将下句中的mci_set_door_open更改为mci_set_door_closed即为关闭光驱门
mcisendcommand(mciid, mci_set, mci_wait | mci_set_door_open, null);
2. 使用mcisendstring,这种方法更为简便
//打开光驱门
//将此语句中的open更改为close即为关闭光驱的门
mcisendstring( "set cdaudio door open", null, 0, null);
3.若有多个光驱,打开指定光驱的方法mci_open_parms openparms;// 第几个cdrom?
dword ncdrom = 0;// 光驱的设备名
openparms.lpstrdevicetype = (char *)((ncdrom << 16) +
mci_devtype_cd_audio);// 打开此设备
mcierror mcir = mcisendcommand (null, mci_open, mci_wait | mci_open_type_id
| mci_open_type, (dword)&openparms);if (mcir != null)
// 不能打开此设备,返回
return;// 打开光驱门
// 将下句中的mci_set_door_open更改为mci_set_door_closed即为关闭光驱门
mcir = mcisendcommand(openparms.wdeviceid, mci_set, mci_wait |
mci_set_door_open, null);mcir = mcisendcommand(openparms.wdeviceid, mci_close, mci_wait, null);
if(StatusParms.dwReturn==MCI_MODE_OPEN&&StatusParms.dwReturn==MCI_MODE_NOT_READY)
mciSendCommand(m_wdeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,NULL);
else
mciSendCommand(m_wdeviceID,MCI_SET,MCI_SET_DOOR_OPEN,NULL);
mciSendCommand(m_wdeviceID,MCI_CLOSE,MCI_WAIT,NULL);