if(StatusParms.dwReturn==MCI_MODE_OPEN¦¦StatusParms.dwReturn==MCI_MODE_NOT_READY)

解决方案 »

  1.   

    最近刚好写了一个与此有关的程序,
        代码如下:
    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);
      

  2.   

    不好意思!我是想问一下为什么只能打开光驱却不能关闭光驱
    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);
      

  3.   

    要保存那个打开光驱的ID。然后用这个ID去关掉光驱才OK。