脚本和 Windows Media Player 窗口

脚本和 Windows Media Player 窗口

我一直在使用 Applescript 来控制 OSX 下 Quicktime Player 的播放,现在正尝试在 Windows 7 和 Windows Media Player 上执行同样的操作窗户

我需要做的就是

  • 启动WMP并加载音频文件
  • 切换播放
  • 向前或向后跳过 x 秒。
  • 获取其在音频文件中的位置。
  • 跳转播放至我选择的任意位置。
  • 亚秒级定位。(见下文编辑)

SDK 位于微软网站似乎提供了我需要的一切,但下面的代码不起作用。

Set oWmp = CreateObject("WMPlayer.OCX")

' Launches WMP window    
oWmp.openPlayer("F:\2014-04-27.mp3")

' This launches background process, don't want this...
'oWmp.url = "file:///F:/2014-04-27.mp3"

' Wait for file to load...
wscript.sleep 200

' Check the state of the player...
While oWmp.Playstate <> 3
    log "Waiting for player. Current state is: " & oWmp.Playstate
    WScript.Sleep 100 
Wend

oWmp.controls.pause()

wscript.sleep 2000

oWmp.controls.play()

唯一起作用的是openPlayer语句。其他一切都执行,但没有错误或执行任何操作。即使我转到 WMP 窗口并单击暂停/播放或停止,Playstate 也始终为 0。我正在使用带有 WMP12 的 Windows 7 32 位

我不想在后台播放音频。我想控制 WMP 窗口中的播放。使用.url = ...后代码就可以正常工作。不过这是在后台运行的。请参阅这里了解更多信息。

以上内容是否适用于 WMP?我很乐意使用 VBS 或 JScript。


编辑:经过进一步研究,我发现 Apple 的 iTunes 有一个不错的脚本接口,它可以完成我上面列出的所有功能。但在测试时,我记得我需要亚秒级定位,而 iTunes COM 接口不提供这种定位…… :(

答案1

openPlayer开始其他完整模式下的 WMP 实例。脚本中的所有其他 WMP 调用仅影响通过调用创建的 WMP 内部实例CreateObject。在这种情况下,该内部实例是不可见的,但也可以可见,例如当 WMP 控件嵌入到网页中时。

与完整模式 WMP 交互称为“远程处理”,请参阅这里了解更多信息。但恐怕无法通过脚本执行此操作。您需要用 C++ 等语言编写特殊程序。

答案2

尽管蒂姆已经按照发布的方式回答了这个问题,但我还是想添加这个答案,以供将来尝试做同样事情的人参考。

正如我在编辑问题时提到的,Windows 版 Quicktime Player 很接近,但还不够。所以我继续搜索,找到了一个脚本插件适用于古老的 WinAmp 音频播放器,效果非常好!我获得了毫秒级定位和我需要的一切。

唯一的一个小问题是它是 32 位的,并且在 Windows x64 环境中运行它意味着我必须记住使用正确的 VBS 引擎,这没什么大不了的。

相关内容