How to eject CD using WMI and Python?

前端 未结 2 1589
南旧
南旧 2021-02-08 22:40

Using Windows\' WMI library, how can I eject CD rom mounted in a specific CD/DVD drive?

I am asking for sources from WMI docs or examples since I am using wmi.py library

相关标签:
2条回答
  • 2021-02-08 23:30

    You can use ctypes.

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

    UPDATE:

    If you have more that one drive, you can use to open command to initialize a specific device before calling the function above. For example (not tested).

    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)
    

    Also, see the documentation on how to check return values

    0 讨论(0)
  • 2021-02-08 23:36

    WMI itself doesn't provide means to eject CD/DVD drives. There're other solutions though, which involve using Windows API functions, for example:

    • Using the mciSendString function. Can't help you with the Python code, but here's the C# example to help you get the idea:

      mciSendString("open f: type cdaudio alias cdrom", null, 0, IntPtr.Zero);
      mciSendString("set cdrom door open", null, 0, IntPtr.Zero);
      
    • Using the DeviceIOControl function. An example (also in C#) is here.

    0 讨论(0)
提交回复
热议问题