![]() |
Laufwerksbezeichnung wie in Windows
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich möchte die Laufwerksbezeichnungen wie in Windows (siehe Bildanhang) erhalten. Ich habe mich nun ein wenig mit WMI beschäftigt, da das ein Weg ist, die Bezeichnung zu erhalten. Vorher hatte ich es über GetDriveType gemacht. Das Problem bei GetDriveType ist das ich mit DRIVE_CDROM nur ermitteln kann, ob es sich um ein CD oder DVD Laufwerk (was von beiden weis ich da nicht) oder bei DRIVE_REMOVABLE um ein Wechselmedium, was auch ein Diskettenlaufwerk sein kann, handelt. Daher hab ich den Weg über WMI genommen. Dort funktioniert das zwar besser aber auch da bekomme ich für CD-DVD Laufwerke nur "CD_ROM Laufwerk" als Beschreibung oder bei Diskettenlaufwerken nur "Diskettenlaufwerk" als Beschreibung. In Windows-Arbeitspaltz steht aber für Diskette 3 1/2-Diskette, DVD-Laufwerk und CD-RW Laufwerk. Meine Frage nun, wo liest Windows diese Bezeichnungen aus? Gruß Mazel |
Re: Laufwerksbezeichnung wie in Windows
Windows liest den Namen des Laufwerks aus, wenn es keinen findet schreibt es stattdessen einfach den Typ des Laufwerks. "CD Drive ( F: )"
Gib Deinem Laufwerk einen Namen dann wirst Du es sehen. |
Re: Laufwerksbezeichnung wie in Windows
Woher weis es dann aber das es ein CD-RW-Laufwerk oder ein DVD-Laufwerk ist, wie es im Anhang zu sehen ist?
Gruß Mazel |
Re: Laufwerksbezeichnung wie in Windows
Zitat:
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; |
Re: Laufwerksbezeichnung wie in Windows
Hi,
diese beiden Funktionen lesen den Volumename aus, den man einer Partion auf der Festplatte geben kann, nicht aber den richtigen Typ. Folgende Shemas sollen verdeutlichen was ich haben möchte: a) so will ich es haben:
Delphi-Quellcode:
b) so ist es bisher:
Volumename: Main kein Name kein Name //über GetVolumeInfo
Drive: C:\ F:\ G:\ Typ: Laufwerk DVD-Laufwerk CD-RW-Laufwerk //über GetDriveType oder anders
Delphi-Quellcode:
Ich kann über GetDriveType bei ROM-Laufwerken nur erkennen ob es ein CD-DVD Lauferk ist, nicht aber ob es ein DVD-Laufwerk oder ein CD-RW-Laufwerk ist.
Volumename: Main kein Name kein Name //über GetVolumeInfo
Drive: C:\ F:\ G:\ Typ: Laufwerk CD-DVD Laufwerk CD-DVD Laufwerk //über GetDriveType Ähnlich ist es bei WMI auch dort bekomme ich nur CD-ROM LAufwerk, mehr leider nicht. Wie kann ich das aber realisieren? Gruß Mazel |
Re: Laufwerksbezeichnung wie in Windows
Ich habe das gefunden was ich brauche. Folgende Funktion liefert mir sogar noch weitere Infos und die Laufwerksicons:
Delphi-Quellcode:
Gruß
var
FileInfo: TSHFileInfo; begin SHGetFileInfo(PAnsiChar('C:\'), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_LARGEICON or SHGFI_TYPENAME or SHGFI_DISPLAYNAME or SHGFI_SYSICONINDEX); Image1.Picture.Icon.handle:=FileInfo.hIcon; Lb1.Caption := FileInfo.szDisplayName; Lb2.Caption := FileInfo.szTypeName; Mazel |
Re: Laufwerksbezeichnung wie in Windows
In welcher Unit ist denn TSHFileInfo deklariert?
Mein BDS2006 findet dazu nichts. Gruß Igotcha |
Re: Laufwerksbezeichnung wie in Windows
Moin Igotcha,
dazu müsstest Du die Unit Shellapi einbinden. |
Re: Laufwerksbezeichnung wie in Windows
In dem Thema
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz