Zitat von
uwewo:
Windows liest den Namen des Laufwerks aus...
Windows liest nicht direkt einen Namen aus sondern nur den konkreten Typ und die Bezeichnung des Laufwerkes und ich rate einfach mal, dass es das beim Treiber macht und stellt diesen dann für alles andere zu Verfügung. Der Explorer und/oder andere Programme, die es wissen wollen können dies dann über die
API auslesen.
ich habe zwar selbst keine ahnung mehr woher ich die beiden funktionen habe,
aber bitte schön:
Delphi-Quellcode:
function GetVolumeLabel(Drive:char):string;
var VolLab:array [0..max_path] of char;
MaxLength,SysFlag:DWord;
OldErrorMode:integer;
begin
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
if GetVolumeInformation(PChar(drive+':\'), VolLab, 255,
nil, MaxLength,
SysFlag, nil, 255) then Result:=vollab;
finally
SetErrorMode(OldErrorMode);
end;
end;
und das hier:
Delphi-Quellcode:
function GetDriveShellDesc (
const Drive : Char) :
string;
var rootpathname :
string;
namebuffer :
string;
maximumcomponentlength : dword;
filesystemflags : dword;
filesystemnamebuffer :
string;
begin
rootpathname := drive+'
:\';
// build the rootpath for our api
// predefine buffers
setlength(namebuffer,25) ;
setlength(filesystemnamebuffer,500) ;
// call the api
if getvolumeinformation (
// returns boolean true if succeeded
pchar(rootpathname),
pchar(namebuffer),
24,
Nil,
maximumcomponentlength,
filesystemflags,
pchar(filesystemnamebuffer),
499)
// build the resulting dword
then begin
Result := StrPas ( PChar (NameBuffer) )+'
('+UpCase(Drive)+'
:)';
end
else begin
Result := UpCase(Drive)+'
:\';
end;
end;