Attempting to open the CD tray

I am trying to open and close the CD tray of my computer using a piece of code. I used MCI commands and included winmm.libin additional dependencies of my project configuration. I turned on windows.hand mmsystem.h.

The code I use is as follows:

mciSendCommand(0, MCI_SET, MCI_SET_DOOR_OPEN, NULL);
mciSendCommand(1, MCI_SET, MCI_SET_DOOR_CLOSED, NULL);

The code builds and works fine, there is simply no action in the CD tray! Can anyone suggest how I need to adapt this?

+4
source share
3 answers

If you have multiple CDs, you should use the following code:

#include <windows.h>  
#include <tchar.h>  
#include <stdio.h>  

int _tmain() 
{ 
   DWORD dwBytes; 
   HANDLE hCdRom = CreateFile(_T("\\\\.\\M:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); 
   if (hCdRom == INVALID_HANDLE_VALUE) 
   { 
     _tprintf(_T("Error: %x"), GetLastError()); 
     return 1; 
   } 

   // Open the door:  
   DeviceIoControl(hCdRom, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); 

   Sleep(1000); 

   // Close the door:  
   DeviceIoControl(hCdRom, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); 

   CloseHandle(hCdRom); 
} 
+5
source

You are missing some steps, first you need to open the device.

Try the following:

#pragma comment( lib, "winmm.lib" )

#include "stdafx.h"
#include <Windows.h>
#include <mmsystem.h>


int _tmain()
{

    MCI_OPEN_PARMS mPar = { 0 };
    mPar.lpstrDeviceType = reinterpret_cast<LPCWSTR>(MCI_DEVTYPE_CD_AUDIO);

    // Open device
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD)&mPar);

    // Open tray
    mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

    // Close tray
    mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

    // Close device
    mciSendCommand(mPar.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);

    return 0;
}
+3

DevC++ IDE ( WINDOWS)

:

1: > > << Enter

Step 2. Project parameters> Parameters> Linker> write "-lWinmm" in Linker << Enter

Step 3: open cdtray

#include<windows.h>
int main(){
mciSendString("set cdaudio door open",0,0,0);
}

Step 4: Close the tray, just change the door β€œopen” to β€œclosed”

 mciSendString("set cdaudio door closed",0,0,0);
0
source

Source: https://habr.com/ru/post/1527894/


All Articles