Um USB-Laufwerke zu finden benutze ich immer folgenden Code.
Delphi-Quellcode:
uses windows
procedure ...
var
strUSB_Drive : string;
DriveList : TStringList;
s: Char;
//-----------------------------
function GetDrives(var LW_List : TStringlist; DriveType:BYTE):byte;
var Drives : array [1..255] of char;
LWListe : TStringList;
i : byte;
Len : DWord;
begin
LWListe:=TStringList.Create;
{Alle Laufwerke ermitteln}
Len:=GetLogicalDriveStrings(255,@Drives);
for i:=1 to Len-2 do
if (i mod 4)=1 then
LWListe.Add(copy(Drives,i,3));
{Laufwerke des angegebenen Typs zählen}
Result:=0;
LW_list.Clear;
for i:=0 to LWListe.Count-1 do begin
if GetDriveType(PChar(LWListe[i]))= DriveType
then begin
Result:=Result+1;
LW_List.Add(copy(LWListe[i],1,2))
end;
end;
LWListe.Destroy;
end;
//------------------
begin
DriveList:=TStringLIst.Create;
{Wechselplatten:}
GetDrives(Drivelist, DRIVE_REMOVABLE);
if DriveList.count > 0
then begin
strUSB_Drive := '';
for i := 0 to drivelist.count - 1
do begin
if (DriveList[i] <> 'A:')
and (DriveList[i] <> 'B:')
then strUSB_Drive := DriveList[i];
end;
if strUSB_Drive = ''
then begin
ShowMessage('Kein Wechseldatenträger an diesem Rechner angeschlossen');
exit;
end;
S := strusb_Drive[1];
end
else begin
ShowMessage('Kein Wechseldatenträger an diesem Rechner angeschlossen');
exit;
end;
DriveList.Free;
....
end;
Wobei damals davon ausgegangen wurde, das immer nur ein USB-Stick am Rechner hängt. Mußt halt den Quelltext entsprechend anpassen.
Gruß Andreas