I need to open CD-ROM by WinApi

Hi,

I need to open CD-ROM by WinApi. My program does'n work. Please help me.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <tchar.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    MCI_OPEN_PARMS OpenParm;
    MCI_SET_PARMS SetParm;
    MCIDEVICEID dID;
    TCHAR* deviceType = _T("Audio");
    
    OpenParm.lpstrDeviceType = deviceType;
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE, (DWORD_PTR)&OpenParm);
    dID = OpenParm.wDeviceID;
    mciSendCommand(dID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD_PTR)&SetParm);
    mciSendCommand(dID, MCI_CLOSE, MCI_NOTIFY, (DWORD_PTR)&SetParm);

    return (EXIT_SUCCESS);
}


Thank you.
Last edited on
Your code works for me if I replace "Audio" with "CDAudio" (no need for SetParm, though.)

Or you can switch to use an ID instead of the name.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>
#include <tchar.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    MCI_OPEN_PARMS OpenParm = {0};
    OpenParm.lpstrDeviceType = (TCHAR*)MCI_DEVTYPE_CD_AUDIO;
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD_PTR)&OpenParm);

    MCIDEVICEID dID = OpenParm.wDeviceID;
    mciSendCommand(dID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
    mciSendCommand(dID, MCI_CLOSE, MCI_NOTIFY, 0);

    return (EXIT_SUCCESS);
}


Andy
Last edited on
Thank you very much :)
Topic archived. No new replies allowed.