var x:integer;
driver:pchar;
s:pchar;
begin
s:='g'+':';
driver:=s;
x := GetDrivetype(driver);
if x=5 then begin
form1.Memo1.Text :=driver+'是光驱'
这是我写的,现在不知道如何才能让程序自已认有几个光驱
driver:pchar;
s:pchar;
begin
s:='g'+':';
driver:=s;
x := GetDrivetype(driver);
if x=5 then begin
form1.Memo1.Text :=driver+'是光驱'
这是我写的,现在不知道如何才能让程序自已认有几个光驱
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi][HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0]
"FirstBusScanTimeInMs"=dword:0000000a
"DMAEnabled"=dword:00000003
"Driver"="atapi"[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0]
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Initiator Id 255][HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0]
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0]
"Identifier"="MAXTOR 4K040H2"
"Type"="DiskPeripheral"[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 1]
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 1\Logical Unit Id 0]
"Identifier"="ST320413A"
"Type"="DiskPeripheral"# 主通道(Scsi Port 0)下的主盘(Target Id 0) 为硬盘 MAXTOR 4K040H2
# 主通道(Scsi Port 0)下的从盘(Target Id 1) 为硬盘 ST320413A
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1]
"FirstBusScanTimeInMs"=dword:00000bbc
"DMAEnabled"=dword:00000001
"Driver"="atapi"[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0]
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Initiator Id 255][HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Target Id 0]
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Target Id 0\Logical Unit Id 0]
"Identifier"="ASUS CD-S500/A"
"Type"="CdRomPeripheral"
"DeviceName"="CdRom0"# 从通道(Scsi Port 1)下的主盘(Target Id 0) 为CDROM ASUS CD-S500/A
# 从通道(Scsi Port 1)下的从盘(Target Id 1) 为 ........(不存在)
# 如果有的话它在 HKEY_LOCAL_MACHINE
\HARDWARE\DEVICEMAP
\Scsi
\Scsi Port 1
\Scsi Bus 0
\Target Id 1
\Logical Unit Id 0
下的 "Identifier" 键上有设备名
a:integer;for i:=65 to 90 do
begin
a:=getdrivetype(pchar(i));
case a of
begin
drive_cdrom:showmessage('this is a cd_rom');
end;
end;
var
typ: Integer;
s: string;
begin
s := 'c:\';
typ := GetDriveType(PChar(s));
if Typ <> 0 then case typ of
DRIVE_REMOVABLE:
begin
ShowMessage('Drive Removable / Diskette');
end;
DRIVE_FIXED:
begin
ShowMessage('Drive fixed / Festplatte');
end;
DRIVE_CDROM:
begin
ShowMessage('CD ROM Drive');
end;
DRIVE_RAMDISK:
begin
ShowMessage('RAM Drive');
end;
DRIVE_REMOTE:
begin
ShowMessage('Remote Drive / Netzlaufwerk');
end;
end;
end;
至于要判断哪几个是光驱,那就用一个循环,从a-z一个个检查。方法就是上面那老兄写的
我只会瞎说
i,DType : integer;
Driver : String;
begin for i := 65 to 90 do
begin
Driver := Char(I) + ':';
DType := GetDriveType(PChar(Driver));
if DType = Drive_CDRom
then begin
Combo.Items.Add('光驱 ' + String(Driver));
end;
end;