如何才能让程序自已认有几个光驱
var x:integer;
driver:pchar;
s:pchar;
begin
s:='g'+':';
driver:=s;
x := GetDrivetype(driver);
if x=5 then begin
form1.Memo1.Text :=driver+'是光驱'
这是我写的,现在不知道如何才能让程序自已认有几个光驱
问题点数:100、回复次数:8Top
1 楼shuixin13(犬犬(心帆))回复于 2003-05-04 00:19:07 得分 40
[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" 键上有设备名Top
2 楼xiaozhanger(你好--绝地反击!)回复于 2003-05-04 08:26:30 得分 20
var
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;
Top
3 楼dawnming(笨小孩)回复于 2003-05-04 09:29:48 得分 20
给你一段代码,你可以看看。
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一个个检查。方法就是上面那老兄写的
我只会瞎说
Top
4 楼liyangyao970(纳兰容若)回复于 2003-05-04 10:19:47 得分 0
学习~~~Top
5 楼budded(All By Myself)回复于 2003-05-04 10:56:21 得分 20
var
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;Top
6 楼Venda(黄飞鸿)回复于 2003-05-04 11:12:27 得分 0
就采用上面的循环遍历法!Top
7 楼xly371(朋友)回复于 2003-05-04 11:49:52 得分 0
谢了,先试一下再给分Top




