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

型:文字列

If omitted, it defaults to the first CD/DVD drive found by iterating from A to Z (an exception is thrown if no drive is found). Otherwise, specify the drive letter optionally followed by a colon or a colon and backslash. For example, "D", "D:" or "D:\".

This can also be a device path in the form "\\?\Volume{...}", which can be discovered by running mountvol at the command line. この場合、ドライブにドライブレターを割り当てる必要はありません。

エラー処理

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

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

備考

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

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

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

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

DriveGetStatusCD, Drive functions

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
}