Попытка открыть лоток для 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 не происходит! Кто-нибудь может подсказать, как мне это адаптировать?

4

Решение

Если у вас есть несколько 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);
}
5

Другие решения

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

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

#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

По вопросам рекламы [email protected]