我的键盘包含一排用于各种非标准键盘任务的按钮。这些键包含修改音量、播放或暂停、跳过曲目等功能。如何使用 Python 模拟基本的播放/暂停?顺便说一句,我在 Windows 上。
3 回答
我会使用pywin32。与安装捆绑在一起的是大量的 API 文档(通常放在类似C:\Python32\Lib\site-packages
.)的位置。它本质上将很多东西包装在 Win32 库中,用于 Windows 中的许多低级任务。
安装后,您可以使用keybd_event的包装器。
您也可以使用SendInput
代替,keybd_event
但它似乎没有被 PyWin32 包装。SendMessage
也是一种选择,但比较麻烦。
您需要查找这些特殊按钮的虚拟扫描代码,因为我怀疑字符到代码的映射功能会在这里为您提供帮助。您可以在此处找到参考。
那么调用函数就很简单了。下面的片段在我的电脑上暂停了 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
它们发送到特定窗口。媒体密钥通常无关紧要,因为它们会被音乐播放器等截获。
您可以使用pyautogui
. 该库包含许多键盘和鼠标模拟。安装pip install pyautogui
在cmd中运行。
为了模拟播放/暂停按键,您应该使用pyautogui.press("playpause")
.
在https://pyautogui.readthedocs.io/en/latest/keyboard.html查看他们的文档以查看支持的键和其他一些键盘功能的列表。
在安装了所有最新更新的 Windows 10 64 上,这对我不起作用。在它起作用之前我需要这个(第三个参数 2)。
win32api.keybd_event(0xB3,0,2,0)
没有费心去研究它为什么起作用,而是把它扔在那里,因为这篇文章和其他类似的帖子让我很沮丧,因为某种原因不能在我的电脑上工作。
这成功地在我的电脑上暂停/播放了亚马逊音乐。