Как определить, извлекся ли оптический привод
Я пытаюсь извлечь оптический диск на ПК с Windows, подключенным к устройству автоматической смены дисков. У меня есть следующий скрипт powershell, который работает большую часть времени:
$path=$args[0]
$sh = New-Object -Comobject "Shell.Application"
$sh.Namespace(17).Items() |
Where-Object { $_.Type -eq "Removable Disc" } |
foreach {
if($_.Path -eq $path) { $_.InvokeVerb("Eject") }
}
Однако иногда это не работает, предположительно потому, что Windows считает, что диск все еще используется.
Можно ли как-нибудь получить от этого код ответа, чтобы узнать, успешно ли он извлек диск? Или иначе сказать, если диск все еще установлен?
Кроме того, кто-нибудь знает хороший способ сделать это на C++, что было бы еще лучше, поскольку я мог бы избежать необходимости вызывать отдельный скрипт...