Entwickler-Ecke
Windows API - Auflistung der Laufwerke
Peter18 - Fr 26.08.16 12:33
Titel: Auflistung der Laufwerke
Ein freundliches Hallo an alle,
ich möchte eine Liste der vorhandenen Laufwerke haben. Die kann ich natürlich mit "TDriveComboBox" erhalten. Vielleicht gibt es aber auch noch eine Möglichkeit direkt eine Stringliste zu erhalten, ohne eine ComboBox zu bemühen.
Ich habe in der Hilfe jedenfalls nichts gefunden. Manchmal muß man eben wissen wie das heißt, was man sucht.
Grüße von der etwas warmn und sonnigen Nordsee ( 26° 85% [tropf, tropf] )
Peter
Delete - Fr 26.08.16 13:01
- Nachträglich durch die Entwickler-Ecke gelöscht -
Peter18 - Fr 26.08.16 13:31
Hallo Frühlingsrolle, (schmackhafter Name)
Dank Dir für die Antwort! (Sie sind importiert) In der Tat, ich will die Liste der Laufwerke mit "GetDriveType" prüfen und das CD/DVD-Laufwerk finden. Es gibt also keine Funktion, die eine Stringliste erstellt, wie sie für "TDriveComboBox" gebraucht wird, (darauf hatte ich spekuliert) oder kann ich das Ergebnis von GetLogicalDriveStrings direkt als Stringliste verwenden?
Ich glaube ein bischen Bitpulerei ist da warscheinlich einfacher.
Grüße von der Nordsee
Peter
Delete - Fr 26.08.16 15:38
- Nachträglich durch die Entwickler-Ecke gelöscht -
t.roller - Fr 26.08.16 18:11
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure List_CDROM_Drives; const DRIVE_UNKNOWN = 0; DRIVE_NO_ROOT_DIR = 1; DRIVE_REMOVABLE = 2; DRIVE_FIXED = 3; DRIVE_REMOTE = 4; DRIVE_CDROM = 5; DRIVE_RAMDISK = 6; var r: LongWord; Drives: array[0..128] of char; pDrive: PChar; begin Form1.DriveComboBox1.Items.clear; r := GetLogicalDriveStrings(SizeOf(Drives), Drives); if r = 0 then Exit; if r > SizeOf(Drives) then raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY)); pDrive := Drives; while pDrive^ <> #0 do begin if GetDriveType(pDrive) = DRIVE_CDROM then Form1.DriveComboBox1.Items.Add(pDrive); Inc(pDrive, 4); end; Form1.DriveComboBox1.ItemIndex := 0; Form1.DriveComboBox1.Items.AddObject('vsIcon', TObject(vsIcon)); end; |
Peter18 - Mi 07.09.16 13:28
Ein freundliches Hallo an alle,
Dank Euch für Eure Lösungen! Habe ganz vergessen, dass diese Frage noch offen war. Mit etwas Bitpulerei bin ich zu folgender Lösung gekommen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function GetCD_Drive: String; var Dr : DWORD ; I : Integer; Cd : String ;
begin Result := '' ; Dr := GetLogicalDrives; I := 0 ; While (Result = '') and (I < 27) do begin if Dr and $0001 > 0 then begin Cd := Chr( 65 + I ) + ':\'; if GetDriveType( PChar( Cd ) ) = DRIVE_CDROM then Result := Cd; end; Dr := Dr shr 1; I := I + 1 ; end; end; |
Grüße von der sonnigen Nordsee (noch 22°)
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!