You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pywinauto控制Windows端Spotify桌面应用?

我懂你这种头疼的感觉——Spotify桌面端的窗口压根没有传统的标题栏,照着记事本例子学的pywinauto用法直接就失效了。别慌,咱们换个思路,靠其他属性定位窗口,再一步步实现控制,下面是具体的解决办法:

第一步:定位无标题的Spotify窗口

既然没法用标题找窗口,咱们就换用进程信息或者窗口类名来定位,这两种方法都很可靠。

方法1:直接通过启动的应用对象连接

你已经用start()启动了Spotify,只需要给窗口一点加载时间,再用进程名完成连接就行:

from pywinauto.application import Application
import time

# 启动Spotify应用
app = Application().start('Spotify.exe')
# 给Spotify留足加载时间(根据你的电脑性能调整)
time.sleep(3)
# 通过进程名连接到应用
app.connect(path='Spotify.exe')

方法2:用窗口类名精准定位

Spotify基于Electron框架开发,它的窗口类名是Chrome_WidgetWin_0(和Chrome浏览器的窗口类名一致),咱们可以直接用这个类名定位:

# 定位到Spotify的主窗口
spotify_window = app.window(class_name='Chrome_WidgetWin_0')
# 可以打印窗口文本验证是否定位成功(虽然无标题,但可能返回一些内部标识)
print(spotify_window.texts())

如果你的电脑同时开着Chrome浏览器,可能会有多个Chrome_WidgetWin_0窗口,这时候可以结合进程ID过滤:

import psutil
from pywinauto.application import Application

# 先找到Spotify的进程ID
spotify_pid = None
for proc in psutil.process_iter(['name', 'pid']):
    if proc.info['name'] == 'Spotify.exe':
        spotify_pid = proc.info['pid']
        break

# 用进程ID+类名精准定位
app = Application().connect(process=spotify_pid)
spotify_window = app.window(process=spotify_pid, class_name='Chrome_WidgetWin_0')
第二步:控制Spotify的常见操作

定位到窗口后,就可以实现各种操作了。这里给几个实用的示例:

1. 播放/暂停

Spotify支持全局空格键控制播放,但先激活窗口会更稳定:

# 激活Spotify窗口
spotify_window.set_focus()
# 模拟空格键触发播放/暂停
spotify_window.type_keys(' ')

2. 切换上一曲/下一曲

用快捷键就能轻松实现:

spotify_window.set_focus()
# 切换到下一曲:Ctrl+右箭头
spotify_window.type_keys('^{RIGHT}')
# 切换到上一曲:Ctrl+左箭头
spotify_window.type_keys('^{LEFT}')

3. 调整音量

同样用快捷键控制音量:

spotify_window.set_focus()
# 音量增大:Ctrl+上箭头
spotify_window.type_keys('^{UP}')
# 音量减小:Ctrl+下箭头
spotify_window.type_keys('^{DOWN}')

4. 进阶:定位并操作具体控件

如果想点击搜索框、收藏按钮这类具体控件,可以先打印窗口的所有控件结构,再精准定位:

# 打印窗口内所有控件的标识符,方便查找目标控件
spotify_window.print_control_identifiers()

比如根据输出找到搜索框的控件信息后,就可以这样操作:

# 定位搜索框(假设输出里显示它是一个Edit控件)
search_box = spotify_window.Edit
# 点击搜索框并输入内容
search_box.click_input()
search_box.type_keys('Viva La Vida')
一些注意事项
  • 等待窗口加载:Spotify启动时可能有闪屏或加载延迟,除了用time.sleep(),还可以用pywinauto的等待方法更精准:
    # 等待窗口变为可见,超时时间10秒
    spotify_window.wait('visible', timeout=10)
    
  • 切换backend:Electron应用的控件用默认的win32 backend可能识别不全,试试用uia backend启动和连接:
    app = Application(backend='uia').start('Spotify.exe')
    app.connect(path='Spotify.exe', backend='uia')
    

内容的提问来源于stack exchange,提问作者West

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:07:55