![]() |
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
@RWarnecke: mit nicht aktiv meine ich nicht verbunden. Der Laufwerksbuchstabe wird im Arbeitsplatz mit 'z:\' angezeigt. Da das Laufwerk aber inaktiv ist, schlägt bisher alles fehl.
@Satty67 Die Funktion DirectoryExists liefert bei einem inaktiven Laufwerk 'False'. Und wenn der Netzwerkverbindung nicht zu erreichen ist, kann auch keine Verbindung erstellt werden. Der Laufwerksbuchstabe ist aber dennoch belegt. Will man nun ein Laufwerk per Software mounten, dann darf das nicht auf den belegten Laufwerksbuchstaben geschehen. Also erneut die Frage: Wie kann man alle belegten (reservierten) Laufwerksbuchstaben ermitteln? Gruß Hendrik |
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
Zitat:
|
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
@Phoenix: danke für den Tipp. Das habe ich bereits getan bevor ich die Frage hier gepostet habe :-)
Hab das aber leider nicht finden können. Außerdem wäre es sicher eine Bereicherung, wenn es hier im Forum gepostet würde. |
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
OpenDialog ist in Dialogs.pas, kapselt aber nur das ComControl. Also das Geheimnis wird da nicht gelüftet.
Bleibt noch es mit einer WMI-Abfrage zu versuchen, wie RWarnecke es vorgeschlagen hat... blöd dass man die Situation nicht so einfach am Home-PC nachbilden kann. Hab' da mal was aus Beispielen zusammen "gehackt"... MS-WMI Type-Bibliothek muss unter Delphi5 vorher importiert werden. Zum Testen, ob es überhaupt inaktive Laufwerke erkennt, sollte es reichen:
Delphi-Quellcode:
(Form mit Button1, ListBox1, und SWbemServices (ActiveX))
procedure TForm1.Button1Click(Sender: TObject);
const DriveTypNames : array[0..6] of String = ('Unknown','No Root Directory','Removable Disk', 'Local Disk','Network Drive','Compact Disc','RAM Disk'); var Services : ISWbemServices; ObjectSet : ISWbemObjectSet; ValueSet : OleVariant; ValueSetDisp : IDispatch; OleTable : IEnumVariant; OleFields : OleVariant; dwRetrieved : LongWord; WQLString : String; DriveTyp : Integer; begin ListBox1.Clear; Services := SWbemLocator1.ConnectServer('','','','','','',0, ValueSet); WQLString := 'SELECT Name,VolumeName,DriveType,FileSystem FROM Win32_LogicalDisk'; ObjectSet := Services.ExecQuery(WQLString,'WQL', 0, ValueSetDisp); OleTable := ObjectSet.Get__NewEnum as IEnumVARIANT; while OleTable.Next(1, OleFields, dwRetrieved) = 0 do begin DriveTyp := VarAsType(OleFields.DriveType, varInteger); if not DriveTyp in [0..6] then DriveTyp := 0; ListBox1.Items.Add(Format('%s [%s] - %s (%s)', [VarToStr(OleFields.Name), VarToStr(OleFields.VolumeName), DriveTypNames[DriveTyp], VarToStr(OleFields.FileSystem)])); end; end; |
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
Hi,
das Thema lässt sich mit den WNet-Funktionen WNetOpenEnum, WNetEnumResource und WNetCloseEnum lösen. Code dazu gibts hier im Forum. Gruß oki |
Re: Arbeitsplatz Laufwerksbuchstaben auslesen
@Oki: Genau das habe ich gesucht! Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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-2025 by Thomas Breitkreuz