Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Ayuda con Unidades (https://www.clubdelphi.com/foros/showthread.php?t=29972)

Jesús Pena 06-02-2006 14:34:40

Ayuda con Unidades
 
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) ; //(DriveString,ImageList1);
      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; {Corresponde al número de unidad}
      tvNodo.SelectedIndex := tvNodo.ImageIndex;
//      tvNodo.StateIndex := tvNodo.ImageIndex;
      GetDriveInfo(nUnidad,cRutaIni,tvNodo);
    end;
  end;
  TreeView1.AutoExpand := True;
  TreeView1.ShowButtons := True;
  TreeView1.FullCollapse;
  GroupBox7.Height := 157;
end;

DarKraZY 08-02-2006 22:37:59

Tal vez te sirva de ayuda los ejemplos de ShellControls que vienen con Delphi. Los componentes creo recordar que están en la carpeta Samples. Y aunque por defecto no está el código fuente, puedes encontrolo dentro de la carpeta "demos" de Delphi.


La franja horaria es GMT +2. Ahora son las 19:12:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi