[C#][Winform]控制CDROM托盤

  • 5090
  • 0
  • C#
  • 2009-09-21

摘要:[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 }

範例檔案 KCDE.zip