Estoy desarrollando una "cosilla" en la que muestro las unidades que tengo instaladas en mi ordenador y dependiendo del tipo muestro un icono u otro. El problema lo tengo en que no sé como diferenciar una unidad de cd con una de dvd y ¿como puedo saber que un disco está conectado a través de un puerto USB?. La rutina que tengo es esta
Código Delphi
[-]procedure TfrmInfoSys.GetDrivers;
var
i ,j, nUnidad: integer;
cRutaIni : String;
DType : Integer;
DriveString : String;
tvNodo : TTreeNode;
begin
GroupBox7.Height := 185;
ProgressBar1.MinValue := 65;
ProgressBar1.MaxValue := 90;
TreeView1.Items.Clear;
j := 0;
for i:=65 to 90 do
begin
ProgressBar1.Progress := i;
cRutaIni:= chr(i) + ':\';
DType := GetDriveType(Pchar(cRutaIni));
case DType of
0 : DriveString := ' Disco No Reconocido';
1 : DriveString := ' Sin Directorio Raiz';
DRIVE_REMOVABLE : DriveString := ' Unidad de Diskette';
DRIVE_FIXED : DriveString := ' Unidad de Disco';
DRIVE_REMOTE : DriveString := ' Unidad de Red';
DRIVE_CDROM : DriveString := ' Unidad de CD-ROM';
DRIVE_RAMDISK : DriveString := ' Unidad de Disco RAM';
end;
if not ((DType = 0) or (DType = 1)) then
begin
tvNodo := TreeView1.Items.Add(nil,chr(i) + ': ' +DriveString) ; with tvNodo do
begin
case DType of
DRIVE_REMOVABLE : ImageIndex := 6;
DRIVE_FIXED : ImageIndex := 2;
DRIVE_REMOTE : ImageIndex := 1;
DRIVE_CDROM : ImageIndex := 4;
DRIVE_RAMDISK : ImageIndex := 0;
end;
end;
inc(j);
nUnidad := i - 64;
tvNodo.SelectedIndex := tvNodo.ImageIndex;
GetDriveInfo(nUnidad,cRutaIni,tvNodo);
end;
end;
TreeView1.AutoExpand := True;
TreeView1.ShowButtons := True;
TreeView1.FullCollapse;
GroupBox7.Height := 157;
end;