Как извлечь CD с помощью WMI и Python? - PullRequest
7 голосов
/ 04 июля 2010

Как использовать библиотеку WMI в Windows, как извлечь компакт-диск, установленный в конкретный привод CD / DVD?

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

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

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

Ответы [ 2 ]

10 голосов
/ 05 июля 2010

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

import ctypes

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

ОБНОВЛЕНИЕ:

Если у вас есть несколько дисков, вы можете использовать для1010 * 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)

Также см. Документацию о том, как проверить возвращаемые значения

2 голосов
/ 04 июля 2010

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 #): здесь .

...