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 2 von 2     12   
GoTo0815

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

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 20:49
@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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#12

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 20:51
Zitat von HendrikSturm:
@Phoenix
Aber welche API Funktion? Und wie kann man das tatsächlich (Code) umsetzen?
Guck halt in die VCL-Sourcen zu dem Dialog
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
GoTo0815

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

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 21:00
@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.
  Mit Zitat antworten Zitat
Satty67

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

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 27. Mai 2009, 21:14
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:
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;
(Form mit Button1, ListBox1, und SWbemServices (ActiveX))
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 28. Mai 2009, 09:37
Hi,

das Thema lässt sich mit den WNet-Funktionen WNetOpenEnum, WNetEnumResource und WNetCloseEnum lösen. Code dazu gibts hier im Forum.

Gruß oki
42
  Mit Zitat antworten Zitat
GoTo0815

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

Re: Arbeitsplatz Laufwerksbuchstaben auslesen

  Alt 28. Mai 2009, 10:43
@Oki: Genau das habe ich gesucht! Danke!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:59 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