DriveEject / DriveRetract

Ejects or retracts the tray of the specified CD/DVD drive. DriveEject can also eject a removable drive.

DriveEject Drive
DriveRetract Drive

パラメータ

Drive

型:文字列

省略された場合、AからZまで反復して見つかった最初のCD/DVDドライブがデフォルトとなります(ドライブが見つからない場合は例外がスローされます)。Otherwise, specify the drive letter optionally followed by a colon or a colon and backslash. 例えば、"D""D:"または"D:\"

これは、コマンドラインでmountvolを実行することで発見できる"\\?\Volume{...}"ような形のデバイスパスであることもあります。この場合、ドライブにドライブレターを割り当てる必要はありません。

エラー処理

検出された場合、失敗時に例外がスローされます。

これらの機能は、ネットワークドライブやエクスプローラーの「取り出し」オプションがないドライブでは、おそらく機能しないでしょう。基礎となるシステム関数が常に失敗を報告するとは限らないため、例外が発生する場合もあれば、発生しない場合もあります。

備考

この機能は、射出または後退が完了するのを待ってからスクリプトを続行させるものです。

以下の例のように、機能が完了するまでの時間を測定することで、以前のトレイの状態を検出できる場合があります。

リムーバブルドライブの取り出しは、ファイルが使用中の場合に警告が表示されないことを除けば、エクスプローラーのコンテキストメニューオプション「取り出し」と概ね同じです。ハードウェアの安全な取り外し」オプションとは異なり、デバイス全体ではなく、ドライブパラメータで特定されたボリュームのみをマウント解除します。

DriveEject、DriveRetractは、IOCTL_STORAGE_EJECT_MEDIAIOCTL_STORAGE_LOAD_MEDIA制御コードに対応しており、テープドライブなどCD/DVD以外のドライブタイプにも影響を与える場合があります。

DriveGetStatusCDDrive関数

1台目のCD/DVDドライブのトレイをイジェクト(開く)します。

DriveEject()

1台目のCD/DVDドライブのトレイを収納する(閉じる)。

DriveRetract()

すべてのリムーバブルドライブ(CD/DVDドライブを除く)をイジェクトします。

Loop Parse DriveGetList("REMOVABLE")
{
    if MsgBox("Eject " A_LoopField ":, even if files are open?",, "y/n") = "yes"
        DriveEject(A_LoopField)
}
else
    MsgBox "No removable drives found."

機能が完了するまでの時間に応じて、トレイを反対の状態(開または閉)に切り替えるホットキーを定義します。

#c::
{
    DriveEject
    ; もし、この機能がすぐに終了した場合、トレイはすでに排出されている可能性があります。
    ; その場合は撤回してください:
    if (A_TimeSinceThisHotkey < 1000)  ; Adjust this time if needed.
        DriveRetract
}