Cómo expulsar un CD utilizando WMI y Python?
Pregunta
El uso de la biblioteca WMI de Windows', ¿cómo puedo expulsar el CD ROM montado en una determinada unidad de CD / DVD?
Estoy pidiendo para las fuentes a partir de documentos de WMI o ejemplos Desde que estoy usando la biblioteca wmi.py en Python.
Sería muy bueno si el equipo satisface solución de Windows más nuevos que Windows 2000 y que tiene los CD-ROM multi. (Es decir, I tienen D: F: unidades y ambos son unidades de CD-ROM puede ser que quiera cd de expulsión en F:.. Específicamente)
Se buscó en la red pero no pudo encontrar nada relevante. La última solución debe ser tener los binarios de 3 ª parte y ejecución de la cáscara.
Solución
Se puede usar ctypes .
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
ACTUALIZACIÓN:
Si usted tiene más de una unidad, se puede utilizar para comando de apertura para inicializar un dispositivo específico antes de llamar a la función anterior. Por ejemplo (no probado).
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)
Además, consulte la documentación sobre cómo comprobar los valores de retorno
Otros consejos
WMI no proporciona medios para expulsar las unidades de CD / DVD. Hay otras soluciones sin embargo, que implican el uso de las funciones de la API de Windows, por ejemplo:
-
Uso de la href="http://msdn.microsoft.com/en-us/library/ms709492.aspx" rel="nofollow noreferrer">
mciSendString
función . No le puede ayudar con el código Python, pero aquí está el ejemplo de C # para ayudarle a obtener la idea:mciSendString("open f: type cdaudio alias cdrom", null, 0, IntPtr.Zero); mciSendString("set cdrom door open", null, 0, IntPtr.Zero);
-
Uso de la href="http://msdn.microsoft.com/en-us/library/aa363216.aspx" rel="nofollow noreferrer">
DeviceIOControl
función . Un ejemplo (también en C #) es aquí .