Laufwerkstyp ermitteln (Festplatte, CD, Ram-Disk...) |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Folgende Prozedur ermittelt alle vorhandenen Laufwerke. Sie erwartet als Parameter eine Liste, die mit den Laufwerksnamen und -typen gefüllt wird:
const
DriveTypeTexts: array[DRIVE_UNKNOWN..DRIVE_RAMDISK] of string =
('Unbekannt', 'Kein Wurzelverzeichnis', 'Diskette', 'Festplatte', 'Netzlaufwerk', 'CDROM', 'RAMDisk');
var
Drive: Char;
DriveType: Integer;
DriveMask: Integer;
Flag: Integer;
begin
DriveMask := GetLogicalDrives; //Bitmaske holen
flag := 1; //Startflag setzen
for Drive := 'A' to 'Z' do //Jeden Buchstaben gegenprüfen
begin
if (flag and DriveMask) <> 0 then
begin
DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
AItems.Add(Format('%s: %s', [Drive, DriveTypeTexts[DriveType]]));
end;
flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
end;
end;
Die Funktion GetLogicalDrives gibt eine Bitmaske zurück, welche die verfügbaren Laufwerke darstellt.Das erste Bit entspricht dem Laufwerk 'A', das zweite dem Laufwerk 'B' usw.Die Bitmaske könnte also so aussehen:
0...00010011 entspricht dem Dezimalwert 16 + 2 + 1 = 19Z...HGFEDCBA entspricht
den Laufwerken A, B und E
Die Prozedur GetDrives prüft anhand dieser Bitmaske jedes Bit, ob es gesetzt ist. Ist es gesetzt, wird das Laufwerk der Liste hinzugefügt.Es wird dabei zwischen Festplatten, Wechsellaufwerken, CD-ROM/DVD-Laufwerken, Netzlaufwerken und RamDisks unterschieden.Ein Beispielaufruf könnte so aussehen:
procedure TForm1.Button1Click(Sender: TObject);
begin
GetDrives(Listbox1.Items)
end;
- Prüfen, ob eine Audio-CD eingelegt ist
- Netzlaufwerke ohne Dialog verbinden
- Netzlaufwerke mit Dialog verbinden
- Feststellen, ob ein Medium eingelegt ist
- CD-Laufwerk öffnen/schließen
- Namen einer Partition ermitteln
- Seriennummer einer Partition ermitteln
- Benachrichtigung bei CD-Wechsel
- Feststellen, ob ein Laufwerk bereit ist