ich hab dein problem zwar net ganz verstanden, aber anscheinend brauchst du alle laufwerkbuchstaben, laufwerktyp und bezeichnungen eines rechners
evtl hilft dir der folgende code weiter (hab ich grad in meiner hilfe gefunden):
Delphi-Quellcode:
Laufwerke auf einem Computer ermitteln
{
Fügt all fixen Laufwerke in Combobox1 ein.
Um z.B alle CD-Rom Laufwerke zu ermitteln,
einfach DRIVE_CDROM anstatt die Konstante DRIVE_FIXED nehmen.
}
procedure List_Drives;
const
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
var
r: LongWord;
Drives:
array[0..128]
of char;
pDrive: PChar;
begin
r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
if r = 0
then Exit;
if r > SizeOf(Drives)
then
raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
pDrive := Drives;
while pDrive^ <> #0
do
begin
if GetDriveType(pDrive) = DRIVE_FIXED
then
Form1.ComboBox1.Items.Add(pDrive);
Inc(pDrive, 4);
end;
end;
//Den Laufwerksnamen ermitteln
function GetVolumeName(DriveLetter: Char):
string;
var
dummy: DWORD;
buffer:
array[0..MAX_PATH]
of Char;
oldmode: LongInt;
begin
oldmode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
GetVolumeInformation(PChar(DriveLetter + '
:\'),
buffer,
SizeOf(buffer),
nil,
dummy,
dummy,
nil,
0);
Result := StrPas(buffer);
finally
SetErrorMode(oldmode);
end;
end;
// Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetVolumeName('
c');
end;
//Den Laufwerkstyp feststellen
procedure TForm1.Button1Click(Sender: TObject);
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;