Detectar memorias USB instaladas


Alguna que otra vez un cliente puede pedirte que su software antivirus detecte las unidades usb instaladas, esto es fácil de hacer con Delphi, veamos el código completo primero:

[highlight=pascal]procedure TForm1.Button1Click(Sender: TObject);
var
drive: char;
begin
for drive:='c' to 'z' do begin
If (GetDriveType(pchar(drive + ':\')) = DRIVE_REMOVABLE) then
begin
ShowMessage(drive+' Es un dispositivo extraíble')
end
else
ShowMessage(drive+' No es un dispositivo USB');
end;
end;[/highlight]

Primero declaramos una variable tipo char para guardar cada letra de la unidad:

[highlight=pascal]
var
drive: char;[/highlight]

Luego en un ciclo for añadimos todas las letrs que queremos recorrer y así dar con el nombre de la unidad:

[highlight=pascal]
begin
for drive:='c' to 'z' do begin[/highlight]

Luego utilizaremos el API de Windows GetDrivetype para saber el tipo de unidad y le pasamos como parámetro el char que hemos guardado en la variable drive, entonces si el tipo es DRIVE_REMOVABLE (Dispositivo extraíble) significa que es una memoria USB

[highlight=pascal] If (GetDriveType(pchar(drive + ':\')) = DRIVE_REMOVABLE) then[/highlight]

bastante sencillo de implementar aunque solo funciona en Windows XP Service Pack 3.