我正在尝试使用一段代码打开和关闭计算机的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托盘操作正在进行!任何人都可以建议我如何适应这个?
答案 0 :(得分:5)
如果您有多个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);
}
答案 1 :(得分:3)
您缺少一些步骤,首先需要打开设备。
试试这个:
#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;
}
答案 2 :(得分:0)
尝试使用DevC ++ IDE(仅Windows)
然后执行以下步骤:
步骤1: 文件>项目>控制台应用程序<<输入
步骤2: 项目选项>参数>链接器>在链接器中输入“ -lWinmm” << 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);