AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeitsplatz Laufwerksbuchstaben auslesen

Ein Thema von GoTo0815 · begonnen am 27. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 16:20
Hallo,

ich habe folgendes Problem:

Ich möchte alle besetzten Laufwerksbuchstaben ermitteln. Leider ist GetLocalDrives nicht in der Lage einen für ein Netzlaufwerk vergebenen Laufwerksbuchstaben zu ermitteln, wenn die Verbindung nicht aktiv ist.
Das Problem schein bekannt und sorg ja bei vielen Rechnern auch für Probleme beim Anschluss von anderen Removables.

Allerdings kann doch so eine Uraltkomponente wie OpenDialog alle Laufwerksbuchstaben des Arbeitsplatzes anzeigen (auch die nicht aktiven Laufwerke).
Also muss doch irgendwie die möglichkeit bestehen, das ganze auf anderen Wege auszulesen. Hat jemand eine Idee, wie ich, ohne visuelle Komponenten zu benutzen, einfach alle Laufwerke des Arbeitsplatzes in eine StringListe einlese?

Gruß

Hendrik
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 16:26
Der von Dir angesprochene Dialog ist eigentlich 'nur' ein Aufruf einer Windows-API-Funktion. Der Dialog selber ist der vom Betriebssystem.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 16:39
Ich kann es gerade nicht ausprobieren, aber evtl. hilft Dir MSDN-Library durchsuchenGetLogicalDriveStrings weiter.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 17:26
Hallo,

@DeddyH
Hilft leider nicht! Wenn ein Laufwerk innerhalb der Windows-Session einmal aktiv war, dann geht das zwar, aber nicht wenn innerhalb der Session nicht verbunden wurde. Dennoch ist dann der Buchstabe belegt.

@Phoenix
Aber welche API Funktion? Und wie kann man das tatsächlich (Code) umsetzen?

Gruß

Hendrik
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 17:37
Hallo Hendrik,

Du könntest das ganze auch über Hier im Forum suchenWMI auslesen. Mit der folgenden Abfrage bekommst Du genau die Laufwerke die auch im Arbeitsplatz angezeigt werden :

SELECT Name, Description, DriveType, FileSystem, FreeSpace, Size, VolumeSerialNumber from Win32_LogicalDisk
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 17:52
Gib GetDriveType (durchlaufen mit allen Laufwerksbuchstaben) auch nicht den korrekten Typ (RemoteDrive)?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 18:10
Ja, über den Weg kann man es auch machen, so dass man mit GetDriveType die Laufwerke bestimmt und dann nur die Laufwerksbuchstaben ausgibt, wo eine Erkennung statt gefunden hat.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 18:13
Leider nein. Ich hatte das direkt mit meinem Laufwerk z:\ getestet.
Mit meinem aktiven Laufwerk T:\ funktioniert das wunderbar.
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 18:25
Zitat von HendrikSturm:
Leider nein. Ich hatte das direkt mit meinem Laufwerk z:\ getestet.
Mit meinem aktiven Laufwerk T:\ funktioniert das wunderbar.
Ich verstehe im Moment nicht ganz, was Du unter einem aktiven und einem inaktiven Laufwerk verstehst. Den Link den ich Dir in meinem letzten Posting mitgegeben habe, gibt den Typ des Laufwerks aus. Wird kein Laufwerk gefunden, so gibt es nichts zurück.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 18:32
Denke ist wohl das leidige Problem, wenn eine Remote-Laufwerk "mit Netzlaufwerk verbinden" an einen lokalen Laufwerksbuchstaben gekoppelt wird. Da wir die Verbindung (trotz Häkchen, bei Start neu verbinden) immer erst verbunden, wenn ein Programm versucht darauf zuzugreifen, was demnach beim ersten Versuch zu einem Fehler führen kann.

Nur NET USE als Autostart-Script funktioniert da, aber auch nur wenn zuvor die Verbindung mit /Delete zurückgesetzt wurde zu 100% (PS: Übrigens ähnlich, wenn mal LTP1 an eine Netzwerkdrucker bindet...)

Ein Versuch ist es Wert, zumindest sollte ein Zugriff vermutet werden und Laufwerk verbinden...
Delphi-Quellcode:
function GetDriveLetters: String;
var
  i : Integer;
begin
  Result := 'CDEFGHIJKLMNOPQRSTUVWXYZ';
  i := Length(Result);
  while i > 0 do begin
    if not DirectoryExists(Result[i]+':\') then
      Delete(Result,i,1);
    dec(i);
  end;
end;
Nicht installierte Diskettenlaufwerke (also A/B) bringen die alte Meldung Retry/Ignore/Cancel in nie dagewesener Verwirrtheit.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz