Einzelnen Beitrag anzeigen

Benutzerbild von Nighthawk1310
Nighthawk1310

Registriert seit: 22. Feb 2004
Ort: Izmir / Türkei
45 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Laufwerksbezeichnung wie in Windows

  Alt 22. Sep 2006, 15:25
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;
Michael
  Mit Zitat antworten Zitat