Попытка открыть лоток для CD

Я пытаюсь открыть и закрыть лоток для компакт-дисков моего компьютера, используя кусок кода. Я использовал команды MCI и включил winmm.lib в дополнительных зависимостях конфигурации моего проекта. Я включил windows.h а также mmsystem.h также.

Код, который я использую, выглядит следующим образом:

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

Код собирается и работает нормально, просто никаких действий с лотком для CD не происходит! Кто-нибудь может подсказать, как мне это адаптировать?

2 ответа

Если у вас есть несколько CD-дисков, вы должны использовать следующий код:

#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); 
} 

Вам не хватает некоторых шагов, сначала нужно открыть устройство.

Попробуй это:

#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;
}

Попробуйте использовать DevC++ IDE (ТОЛЬКО для WINDOWS)

Затем выполните шаги:

Шаг 1: Файл> Проект> Консольное приложение << Enter

Шаг 2: Параметры проекта> Параметры> Linker > напишите "-lWinmm" в Linker << Enter

Шаг 3: Откройте cdtray. Скопируйте и вставьте этот небольшой код в вашу IDE. Я рекомендую DevC++ для этого..

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

Шаг 4: Закройте лоток, просто измените дверь "открыть" на "закрыто"

 mciSendString("set cdaudio door closed",0,0,0);
Другие вопросы по тегам