Drive

光学ドライブのトレイの開閉、ドライブのボリュームラベルの変更

Drive, Label [, Drive , NewLabel]
Drive, Eject [, Drive , Retract?]
Drive, Lock, Drive
Drive, Unlock, Drive

Drive, Label [, Drive , NewLabel]

ドライブのボリュームラベルをNewLabelに変更する。
NewLabelを省略すると、ボリュームラベルなしになる。
Driveには、ドライブ文字とコロンを指定する。(例:「C:」)(UNCやマップドドライブも指定可能)
ボリュームラベル名を取得するには、以下のようにする。

DriveGet, OutputVar, Label, C:

Drive, Eject [, Drive , Retract?]

CDやDVDなどの光学ドライブのトレイを排出/格納する。
Driveを省略した場合、デフォルトの光学ドライブが操作される。
開かれたトレイを戻す場合、第3引数に「1」を指定する。

Drive, Eject, G:, 1

開いているトレイを開こうとした場合や、閉じているトレイを閉じようとした場合、操作は成功とみなされる(ErrorLevelが「0」になる)。
光学ドライブ以外のドライブを操作しようとした場合は、このコマンドは動作せず、ErrorLevelは「1」になる。

このコマンドを実行するとは、トレイの排出/格納が終了するまでスクリプトは停止する。
現在のところ、停止中はホットキーなどが効かなくなり、フックを利用しているとキーボード/マウス操作にラグが発生する。

開いているトレイを開こうとするとコマンドが即座に終了することを利用することで、下の例のように閉じていれば開き、開いていれば閉じるという操作を実現できる。

#c::
Drive, Eject
; If the command completed quickly, the tray was probably already ejected.
; In that case, retract it:
if A_TimeSinceThisHotkey < 1000 ; Adjust this time if needed.
     Drive, Eject,, 1
return

DriveGetコマンドを使用することで、光学ドライブの動作状況を取得することができる。

Drive, Lock, Drive

光学ドライブのトレイ排出を禁止する。システム全体で有効となる。
ロックを実行したスクリプト以外のスクリプトやプログラムがロックを解除することも可能。
ロックを解除するか、システムを再起動するまでロックは有効になる。

Drive, Unlock, Drive

「Drive, Lock」やその他の理由でロックされたドライブのロックを解除する。
NT系では、複数回ロックをかけられたドライブは、ロックをかけられた回数だけアンロックを行わないと排出可能にならない。
ドライブがロックされているかどうかを直接調べる方法は、ない。

ErrorLevel

正常終了すれば「0」、何か問題があれば「1」

Related

DriveGet, DriveSpaceFree

Example(s)

Drive, Label, D:, BackupDrive
Drive, Eject,, 1 ; Retract (close) the tray of the default CD or DVD drive.