摘要:[C#][Winform]控制CDROM托盤
因為之前買的機殼其設計不良導致無法按到光碟機的退出鈕,真的是有點難控制光碟機托盤的進出。網路上很少找得到有這樣單一功能的免費程式,不是功能太多太複雜要不就是shareware(不是freeware), 於是找了一些資料、自己寫了一個POC(Proof of Concept) 的程式。
01
//引用Windows API
02
[DllImport("kernel32", SetLastError = true)]
03
public static extern int GetDriveType(string driveLetter);
04
05 [DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
06
public static extern void mciSendStringA(string lpstrCommand, string lpstrReturnString, Int32 uReturnLength, Int32 hwndCallback);
07
08 private List<string> DiscoverDrives()
09
{
10
List<string> lstCDROM = new List<string>();
11
//列出電腦上的所有磁碟代號
12
foreach (string drive in Environment.GetLogicalDrives())
13
{
14
if (GetDriveType(drive) == 5) //CDROM type
15
lstCDROM.Add(drive);
16
}
17
return lstCDROM;
18
}
19
20 //控制光碟機托盤
21
private void DoorControl(string driveLetter, bool open)
22
{
23
string strCmd = "set cdaudio!" + driveLetter;
24
strCmd += (open) ? " door open" : " door closed";
25
mciSendStringA(strCmd, "", 0, 0);
26
}

02

03

04

05 [DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
06

07

08 private List<string> DiscoverDrives()
09

10

11

12

13

14

15

16

17

18

19

20 //控制光碟機托盤
21

22

23

24

25

26

範例檔案 KCDE.zip