弹出或收回指定 CD/DVD 驱动器的托盘, 或弹出一个可移动驱动器.
DriveEject Drive DriveRetract Drive
类型: 字符串
驱动器的字母, 后面跟着可选的冒号或冒号和反斜杠. 例如, D
, D:
或 D:\
.
这也可以是一个设备路径, 形式为 \\?\Volume{...}
, 可以通过在命令行运行 mountvol 来发现. 在这种情况下, 不需要为驱动器分配一个盘符.
如果省略, 则默认为通过从 A 到 Z 的迭代找到的第一个 CD/DVD 驱动器. 如果没有找到驱动器, 则抛出异常.
如果检测到失败, 则抛出异常.
这两个函数可能无法在网络驱动器或资源管理器中没有 "弹出" 选项的任何驱动器上工作. 底层的系统函数并不总是报告失败, 所以可能会或不会抛出异常.
在允许脚本继续之前, 函数会等待弹出或收回完成.
可以通过测量函数完成所需的时间来判断之前的托盘状态, 如下例所示.
弹出一个可移动驱动器通常相当于在资源管理器中使用 "弹出" 上下文菜单选项, 但是如果文件正在使用不会显示警告. 与安全移除硬件选项不同, 这只卸载由 Drive 参数标识的卷, 而不是整个设备.
DriveEject 和 DriveRetract 对应于 IOCTL_STORAGE_EJECT_MEDIA 和 IOCTL_STORAGE_LOAD_MEDIA 控制代码, 它们也可能对 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."