Как извлечь компакт-диск с использованием WMI и Python?

StackOverflow https://stackoverflow.com/questions/3174349

  •  02-10-2019
  •  | 
  •  

Вопрос

Использование библиотеки WMI Windows 'WMI, как я могу выбросить CD ROM, установленный на определенном диске CD / DVD?

Я прошу источники от WMI Docs или примеров, поскольку я использую библиотеку WMI.PY на Python.

Было бы здорово, если решение удовлетворяет компьютеру Windows, новее, чем Windows 2000, и имея несколько компакт-дисков. (т.е. у меня D: F: Drives и оба являются дисками CD-ROM. Я мог бы выбрать компакт-диск в F: в частности.)

Искал в сети, но не смог найти ничего актуального. Последнее решение должно иметь 3-й партижные двоичные файлы и выполнять из оболочки.

Это было полезно?

Решение

Вы можете использовать Ctypes..

import ctypes

ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)

ОБНОВИТЬ:

Если у вас есть больше, что один диск, вы можете использовать для открытым Команда для инициализации определенного устройства перед вызовом функции выше. Например (не проверено).

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. Тем не менее, есть другие решения, которые включают использование функций API 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 #) здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top