Как извлечь 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#) здесь.

вы можете использовать pygame

      pygame.cdrom.CD.eject()
Другие вопросы по тегам