Есть ли способ отличить мои 2 дисковода при выполнении

$cd = Add-Type -memberDefinition @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)] public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, IntPtr hwndCallback);
"@ -passthru -name mciSendString
$cd::mciSendStringA('set cdaudio door open', $null, 0, 0);

через Windows Powershell? Или я просто застрял с командой, открывающей мой Blu-ray привод вместо моего DVD-привода?

1 ответ1

0

Вы видели это: C # Open Закрыть несколько дисков? Обратите внимание, что есть способ указать букву диска:

Чтобы открыть диск, вам нужно отправить две командные строки, используя mciSendStringA. Первый назначит имя для желаемого диска. Вторая команда откроет лоток для диска:

mciSendStringA("open " + driveLetter + ": type CDaudio alias drive" + driveLetter, 
                 returnString, 0, 0);
mciSendStringA("set drive" + driveLetter + " door open", returnString, 0, 0);

Вы можете получить информацию диска (буква, тип и так далее) в PowerShell , используя статический GetDrives метод из DriveInfo класса:

[System.IO.DriveInfo]::GetDrives()

Вот эта версия кода C # для PowerShell:

$Winmm = Add-Type -MemberDefinition @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)] public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, IntPtr hwndCallback);
"@ -PassThru -Name mciSendString

# Replace X with your DVD drive letter
$DvdDrive = 'X'

$Winmm::mciSendStringA("open ${DvdDrive}: type CDaudio alias drive$DvdDrive", $null, 0, 0);
$Winmm::mciSendStringA("set drive$DvdDrive door open", $null, 0, 0);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .