Drive

Öffnet/schließt ein CD- oder DVD-Laufwerk oder ändert die Volumebezeichnung eines Laufwerks.

Drive, Unterbefehl , Wert1, Wert2

Die Parameter Unterbefehl, Wert1 und Wert2 sind voneinander abhängig und können wie folgt verwendet werden.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

Label

Ändert die Volumebezeichnung eines bestimmten Laufwerks.

Drive, Label, Laufwerk , NeueBezeichnung

Laufwerk ist der Laufwerksbuchstabe, gefolgt von einem Doppelpunkt und optional einem umgekehrten Schrägstrich (UNC-Netzwerkpfade und zugeordnete Laufwerke wären auch möglich). Wenn NeueBezeichnung weggelassen wird, bekommt das Laufwerk eine leere Bezeichnung zugewiesen.

Mit dem Label-Unterbefehl von DriveGet kann die Bezeichnung eines Laufwerks abgerufen werden, z.B. DriveGet, AusgabeVar, Label, C:.

Lock

Sperrt die Auswurffunktion eines bestimmten Laufwerks.

Drive, Lock, Laufwerk

Laufwerk ist der Laufwerksbuchstabe, gefolgt von einem Doppelpunkt und optional einem umgekehrten Schrägstrich (UNC-Netzwerkpfade und zugeordnete Laufwerke wären auch möglich).

Die meisten Laufwerke können nicht gesperrt werden, wenn sie offen sind. Allerdings könnte die Sperrung immer noch erfolgen, nachdem das Laufwerk geschlossen wurde.

Dieser Unterbefehl hat keine Auswirkung auf Laufwerke, die keine Sperrung zulassen (was auf die meisten schreibgeschützten Laufwerke zutrifft).

Mit dem Unlock-Unterbefehl unten kann ein Laufwerk entsperrt werden. Die Sperrung eines Laufwerks bleibt auch nach Beendigung des verantwortlichen Skripts bestehen. Andere Skripte, Programme oder ein Neustart des Systems können die Sperre wieder aufheben.

Wenn das angegebene Laufwerk nicht existiert oder die Sperrfunktion nicht unterstützt, wird ErrorLevel auf 1 gesetzt. Andernfalls wird es auf 0 gesetzt.

Unlock

Entsperrt die Auswurffunktion eines bestimmten Laufwerks.

Drive, Unlock, Laufwerk

Laufwerk ist der Laufwerksbuchstabe, gefolgt von einem Doppelpunkt und optional einem umgekehrten Schrägstrich (UNC-Netzwerkpfade und zugeordnete Laufwerke wären auch möglich).

Dieser Unterbefehl muss mehrmals ausgeführt werden, wenn das Laufwerk mehrmals gesperrt wurde (zumindest bei einigen Laufwerken). Führt man z.B. dreimal Drive, Lock, D: aus, wäre dreimal Drive, Unlock, D: erforderlich, um die Sperre aufzuheben. Genau aus diesem Grund und der Tatsache, dass der gesperrte Zustand eines Laufwerks nicht ermittelt werden kann, ist es ratsam, diesen Zustand in einer Variable zu hinterlegen, um den Überblick zu behalten.

Eject

Öffnet oder schließt ein CD- oder DVD-Laufwerk.

Drive, Eject , Laufwerk, 1

Um andere Medien- oder Gerätetypen auszuwerfen, schauen Sie sich Beispiel #3 im unteren Bereich dieser Seite an.

Laufwerk ist der Laufwerksbuchstabe, gefolgt von einem Doppelpunkt und optional einem umgekehrten Schrägstrich. Wenn Laufwerk weggelassen wird, wird das Standard-CD/DVD-Laufwerk verwendet. Um das Laufwerk auszufahren/zu öffnen, lassen Sie den letzten Parameter weg. Um das Laufwerk einzufahren/zu schließen, geben Sie 1 im letzten Parameter an, z.B. Drive, Eject, D:, 1.

Während dieser Unterbefehl das Laufwerk ein- oder ausfährt, wartet das Skript. Befindet sich das Laufwerk bereits in der richtigen Position (offen oder geschlossen), wird ErrorLevel auf 0 gesetzt (d.h. "kein Fehler").

Dieser Unterbefehl funktioniert möglicherweise nicht, wenn das angegebene Laufwerk ein Netzlaufwerk oder Nicht-CD/DVD-Laufwerk ist. Bei Misserfolg wird ErrorLevel auf 1 gesetzt.

Es ist möglich, den vorherigen Zustand des Laufwerks zu ermitteln. Messen Sie einfach die Zeit, die der Unterbefehl zum Ausführen benötigt. Zum Beispiel schaltet der folgende Hotkey das Laufwerk jeweils in den entgegengesetzten Zustand (offen oder geschlossen):

#c::
Drive, Eject
; Wurde der Befehl schnell ausgeführt, war das Laufwerk vmtl. schon offen.
; In diesem Fall kann es geschlossen werden:
if (A_TimeSinceThisHotkey < 1000)  ; Passen Sie den Wert an, falls nötig.
    Drive, Eject,, 1
return

Mit DriveGet kann der Medienstatus eines CD- oder DVD-Laufwerks (läuft, gestoppt, offen, usw.) ermittelt werden.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.

DriveGet, DriveSpaceFree

Beispiele

Ändert die Volumebezeichnung des D-Laufwerks.

Drive, Label, D:, Backup-Laufwerk

Schließt das Standard-CD/DVD-Laufwerk.

Drive, Eject,, 1

Dies ist eine alternative Auswurfmethode, die nicht nur für CD/DVD-Laufwerke, sondern auch für andere Medien-/Gerätetypen funktioniert. Passen Sie in der ersten Zeile den gewünschten Laufwerksbuchstaben an (alle anderen Zeilen können ignoriert werden).

LaufwBuchst := "I:"  ; Der Laufwerksbuchstabe zum Auswerfen.

hVolume := DllCall("CreateFile"
    , "Str", "\\.\" . LaufwBuchst
    , "UInt", 0x80000000 | 0x40000000  ; GENERIC_READ | GENERIC_WRITE
    , "UInt", 0x1 | 0x2  ; FILE_SHARE_READ | FILE_SHARE_WRITE
    , "UInt", 0
    , "UInt", 0x3  ; OPEN_EXISTING
    , "UInt", 0, "UInt", 0)
if (hVolume != -1)
{
    DllCall("DeviceIoControl"
        , "UInt", hVolume
        , "UInt", 0x2D4808   ; IOCTL_STORAGE_EJECT_MEDIA
        , "UInt", 0, "UInt", 0, "UInt", 0, "UInt", 0
        , "UIntP", dwBytesReturned  ; Unbenutzt.
        , "UInt", 0)
    DllCall("CloseHandle", "UInt", hVolume)
}