How to get the drive letter of a CD-ROM drive (Views: 29)
Problem/Question/Abstract: I am writing a program which needs the drive name (c , d ,e, ...) of the CD-ROM drive. But that name can be different on different computers. In which file (win.ini , system.ini, registry or something else) can I find the special drive name? Answer: Solve 1: function FindFirstCDROMDrive: Char; var drivemap, mask: DWORD; i: Integer; root: string; begin Result := #0; root := 'A:\'; drivemap := GetLogicalDrives; mask := 1; for i := 1 to 32 do begin if (mask and drivemap) <> 0 then if GetDriveType(PChar(root)) = DRIVE_CDROM then begin Result := root[1]; Break; end; mask := mask shl 1; Inc(root[1]); end; end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMEssage('First CD drive is ' + FindFirstCDROMDrive); end; Solve 2: function getcdroms: string; var i: Byte; begin Result := ''; for i := 65 to 90 do if GetDriveType(Char(i) + ':\') = DRIVE_CDROM then Result := Result + Char(i); end; Solve 3: Use the GetDriveType API function. The following will show all CD-ROM drives, to get only the first one put a 'Break' into the loop. var ch: Char; s: string; begin for ch := 'D' to 'Z' do begin s := ch + ':\'; if GetDriveType(PChar(s)) = DRIVE_CDROM then ShowMessage('CDROM is ' + s[1]) end; end; |