【问题标题】:Media Play/Pause Simulation媒体播放/暂停模拟
【发布时间】:2020-08-27 21:09:40
【问题描述】:

我的键盘包含一排用于各种非标准键盘任务的按钮。这些键包含修改音量、播放或暂停、跳过曲目等功能。如何使用 Python 模拟基本的播放/暂停?顺便说一句,我在 Windows 上。

【问题讨论】:

    标签: python windows


    【解决方案1】:

    我会使用pywin32。与安装捆绑在一起的是大量 API 文档(通常放置在类似 C:\Python32\Lib\site-packages 的位置。)它本质上将很多东西包装在 Win32 库中,用于 Windows 中的许多低级任务。

    安装后,您可以使用keybd_event 的包装器。

    您也可以使用SendInput 代替keybd_event,但它似乎没有被PyWin32 包装。 SendMessage 也是一种选择,但比较麻烦。

    您需要查找这些特殊按钮的虚拟扫描代码,因为我怀疑字符到代码的映射功能会帮助您。你可以找到参考here

    那么调用函数就很简单了。下面的 sn-p 在我的计算机上暂停 Chuck Berry。

    >>> import win32api
    >>> VK_MEDIA_PLAY_PAUSE = 0xB3
    >>> hwcode = win32api.MapVirtualKey(VK_MEDIA_PLAY_PAUSE, 0)
    >>> hwcode
    34
    >>> win32api.keybd_event(VK_MEDIA_PLAY_PAUSE, hwcode)
    

    MapVirtualKey 为我们提供了keybd_event 需要的硬件扫描码(或者更有可能是键盘驱动程序。)

    请注意,所有这些都被键盘驱动程序抢购一空,因此您实际上无法控制击键的发送位置。使用SendMessage,您可以将它们发送到特定窗口。媒体密钥通常无关紧要,因为它们会被音乐播放器等拦截。

    【讨论】:

    • 需要注意的是,MapVirtualKey生成的扫描码是不正确或不完整的,但一般都没有关系,因为大多数应用程序并不关心扫描码是什么(你可以简单地传递0)。扫描代码 34 是“G”键。播放/暂停的正确扫描代码具有 0xE0 前缀字节,这意味着应该将 KEYEVENTF_EXTENDEDKEY 标志传递给 MapVirtualKey。
    【解决方案2】:

    在安装了所有最新更新的 Windows 10 64 上这对我不起作用。在它起作用之前我需要这个(第三个参数 2)。

    win32api.keybd_event(0xB3,0,2,0)
    

    没有费心去研究为什么它可以工作,但把它扔在那里,因为这篇文章和其他类似的帖子让我很沮丧,因为某种原因不能在我的电脑上工作。

    这成功地在我的电脑上暂停/播放了 Amazon Music。

    【讨论】:

      【解决方案3】:

      您可以使用pyautogui。该库包含许多键盘和鼠标模拟。 在 cmd 中安装运行 pip install pyautogui

      为了模拟播放/暂停按键,您应该使用pyautogui.press("playpause")

      https://pyautogui.readthedocs.io/en/latest/keyboard.html 上查看他们的文档以查看支持的按键列表和其他一些键盘功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多