Abrir y cerrar la entrada de CD/DVD en Windows y Linux



Versión: todas.

Linux

No para mi sorpresa, la solución en Linux fue ejecutar un simple comando especificando si la entrada debe abrirse (eject) o cerrarse (eject -t). Afortunadamente Python incorpora un gran soporte para ejecutar comandos o lanzar nuevos procesos a través del módulo subprocess.

from subprocess import call
call("eject")  # Abrir.
call(["eject", "-t"])  # Cerrar.

Dada la ausencia de dicho módulo en versiones anteriores a la 2.4, consideren como una segunda opción la convencional aunque poco recomendada os.system().

from os import system
system("eject")
system("eject -t")

Windows

Se utiliza la función mciSendString, que permite enviar un comando a un dispositivo multimedia. El conjunto de operaciones que soporta MCI es bastante amplio; en este caso, bastará con la implementación del comando set, que establece los ajustes especificados a un determinado dispositivo. La llamada a la API de Windows se realiza vía el módulo ctypes.

from ctypes import windll
windll.winmm.mciSendStringA("set cdaudio door open", None, 0, 0)  # Abrir.
windll.winmm.mciSendStringA("set cdaudio door closed", None, 0, 0)  # Cerrar.

Usuarios de pywin32 tendrán que conformarse con esta implementación como producto de la ausencia del soporte de las funciones de MCI.



Deja un comentario