如何使用 WMI 和 Python 弹出 CD?

发布于 2024-09-08 07:15:39 字数 292 浏览 4 评论 0原文

使用 Windows 的 WMI 库,如何弹出安装在特定 CD/DVD 驱动器中的 CD ROM?

由于我在 Python 上使用 wmi.py 库,因此我要求获取 WMI 文档或示例的源代码。

如果解决方案能够满足比 Windows 2000 更新且具有多个 CD-ROM 的 Windows 计算机,那就太好了。 (即我有 D: F: 驱动器,并且都是 CD-ROM 驱动器。我可能想专门弹出 F: 中的 cd。)

在网上搜索但找不到任何相关内容。最后一个解决方案必须是使用第 3 方二进制文件并从 shell 执行。

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 on Python.

It would be great if solution satisfies Windows computer newer than Windows 2000 and having multi CD-ROMs. (i.e. I have D: F: drives and both are CD-ROM drives. I might want to eject cd in F: specifically.)

Searched on the net but could not find anything relevant. The last solution must be having 3rd party binaries and executing from the shell.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一口甜 2024-09-15 07:15:39

您可以使用ctypes

import ctypes

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

更新:

如果您有多个驱动器,则可以使用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)

另请参阅文档了解如何检查返回值

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

但可醉心 2024-09-15 07:15:39

WMI 本身不提供弹出 CD/DVD 驱动器的方法。不过,还有其他解决方案,其中涉及使用 Windows API 函数,例如:

  • 使用 mciSendString 函数。无法帮助您使用 Python 代码,但这里有 C# 示例可以帮助您理解这个想法:

    mciSendString("open f: type cdaudio alias cdrom", null, 0, IntPtr.Zero);
    mciSendString("设置 cdrom 门打开", null, 0, IntPtr.Zero);
    
  • 使用 DeviceIOControl 函数。一个示例(也在 C# 中)是 此处

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.

你如我软肋 2024-09-15 07:15:39

你可以使用 pygame

pygame.cdrom.CD.eject()

you can using pygame

pygame.cdrom.CD.eject()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文