Как извлечь CD с помощью WMI и Python?
Используя библиотеку WMI в Windows, как извлечь компакт-диск, смонтированный в определенном приводе CD /DVD?
Я прошу источники из WMI документов или примеров, так как я использую библиотеку wmi.py на Python.
Было бы замечательно, если бы решение удовлетворяло требованиям компьютера Windows, более нового, чем Windows 2000, и имеющего несколько компакт-дисков. (то есть у меня есть приводы D: F: и оба являются приводами CD-ROM. Возможно, я захочу извлечь CD в F: конкретно.)
Искал в сети, но не смог найти ничего актуального. Последнее решение должно иметь сторонние двоичные файлы и выполняться из оболочки.
3 ответа
Вы можете использовать ctypes.
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
ОБНОВИТЬ:
Если у вас более одного диска, вы можете использовать команду open для инициализации определенного устройства перед вызовом функции выше. Например (не проверено).
ctypes.windll.WINMM.mciSendStringW(u"open D: type cdaudio alias d_drive", None, 0, None)
ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)
Также см. Документацию о том, как проверить возвращаемые значения.
Сам WMI не предоставляет средств для извлечения CD/DVD дисков. Есть и другие решения, которые включают использование функций Windows API, например:
С использованием
mciSendString
функция. Не могу помочь вам с кодом Python, но вот пример C#, чтобы помочь вам понять:mciSendString("open f: type cdaudio alias cdrom", null, 0, IntPtr.Zero); mciSendString("set cdrom door open", null, 0, IntPtr.Zero);
С использованием
DeviceIOControl
функция. Пример (также в C#) здесь.