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

Unified Remote Control:获取Winamp随机播放状态值

搞定Winamp随机播放状态获取的Lua脚本方案

我来帮你解决Unified Remote里获取Winamp随机播放状态的问题!其实核心就是用对Unified Remote的Lua API和Winamp的消息机制,下面一步步给你拆解:

关键前提先明确

Winamp的窗口类名是固定的Winamp v1.x,这是我们定位窗口的关键;另外你提到的WM_USER+250消息,转换成十六进制就是0x04FA(因为WM_USER的基础值是0x0400,加上250刚好是0x04FA),这个消息的返回值就是二进制的随机播放状态:1代表开启,0代表关闭。

基础版脚本:获取状态并更新按钮文本

下面是最核心的实现代码,你可以把这段逻辑放到按钮的点击事件里,或者面板的初始化/刷新逻辑中:

-- 第一步:找到Winamp的窗口句柄
local winamp_hwnd = win.find("Winamp v1.x")

if winamp_hwnd then
    -- 第二步:发送状态查询消息,获取随机播放状态
    local shuffle_state = win.msg.send(winamp_hwnd, 0x04FA, 0, 0)
    -- 注:后面两个0是消息的wParam和lParam,Winamp这个接口不需要传值,所以填0就行

    -- 第三步:根据状态更新按钮文本
    local shuffle_btn = buttons.get("your_shuffle_button_id") -- 替换成你按钮的实际ID
    if shuffle_state == 1 then
        shuffle_btn.setText("🔀 随机播放开启")
    else
        shuffle_btn.setText("🔀 随机播放关闭")
    end
else
    -- 处理Winamp未运行的情况
    buttons.get("your_shuffle_button_id").setText("Winamp未启动")
end

进阶版:实时刷新按钮状态

如果想让按钮文本实时跟着Winamp的随机播放状态变化,可以把逻辑放到update函数里,定时刷新:

function update()
    local winamp_hwnd = win.find("Winamp v1.x")
    local shuffle_btn = buttons.get("your_shuffle_button_id")

    if winamp_hwnd then
        local shuffle_state = win.msg.send(winamp_hwnd, 0x04FA, 0, 0)
        shuffle_btn.setText(shuffle_state == 1 and "🔀 随机播放开启" or "🔀 随机播放关闭")
    else
        shuffle_btn.setText("Winamp未启动")
    end
end

-- 设置每隔1秒刷新一次状态
update_interval(1000)

注意事项

  1. 确保你的Unified Remote脚本里已经引入了win和buttons模块(默认面板脚本都会包含,不用额外加);
  2. 替换代码里的your_shuffle_button_id为你在面板编辑器里给随机播放按钮设置的实际ID;
  3. 如果测试时没拿到状态,先检查Winamp是否在运行,或者有没有拼写错窗口类名(必须是Winamp v1.x,注意大小写和空格)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:40