检测通过cmd播放的媒体播放器

Detect media player playing via cmd

如何检测媒体播放器是否停止播放?

请回答 Windows 媒体播放器。我需要它通过 cmd\bat 进行检测。

我需要做的就是在播放播放列表后关闭 Windows 媒体播放器。所以 到目前为止我有:

start wmplayer.exe /play /playlist "NiteTime Listener Playlist"

基本上我正在制作一个程序,我可以将某些文件放在特定的位置 Windows Media Player 中的播放列表,然后打开程序,它播放所有 文件,然后关闭 PC。

到目前为止,我已经设置了启动 WMP(Windows 媒体播放器),播放播放列表,然后检测 WMP 是否打开,如果没有,则关闭 PC。

如果是,则循环再次检测。

唯一的问题是播放列表完成后关闭 WMP。

这是我的完整代码:

@echo off
title Automatic Shutdown for NiteTime Listener
echo To cancel Shutdown, close this program before Player.
start mplayer2.exe /play /Playlist "NiteTime Listener Playlist"
:testfor
tasklist /FI "IMAGENAME eq wmplayer.exe" 2>NUL | find /I /N "wmplayer.exe">NUL
if "%ERRORLEVEL%"=="0" goto :ProgramRunning
if "%ERRORLEVEL%"=="1" goto :ProgramNotRunning
pause

:ProgramRunning
goto testfor

:ProgramNotRunning
shutdown /s /f

Windows Media Player 不支持在媒体播放停止时自动关闭。1 并且它不包含任何用于控制或读取状态的命令行选项现有播放器进程数。

至少有四个选项可用。

  1. 如果您想坚持使用 Windows Media Player,您可以编写一个嵌入 Windows Media Player ActiveX 控件的基本应用程序。 (大约 100-150 行代码,大部分是在您创建项目时自动生成的样板文件。)
  2. 使用 VLC 并将 vlc://quit 添加到播放列表的末尾。

    m3u 播放列表

    #EXTM3U
    C:\Path\To\My\Media\File1.mp3
    C:\Path\To\My\Media\File2.mp3
    vlc://quit
    

    XSPF 播放列表

    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="1" xmlns="http://xspf.org/ns/0/">
       <trackList>
         <track><location>file:///C:\Path\To\My\Media\File1.mp3</location></track>
         <track><location>file:///C:\Path\To\My\Media\File2.mp3</location></track>
         <track><location>vlc://quit</location></track>
       </trackList>
    </playlist>
    

    使用命令行启动 VLC:

    start /wait "C:\path\to\vlc.exe" "c:\path\to\playlist\file.m3u"
    
  3. 使用类似 AutoIt 的实用程序通过其用户界面控制媒体播放器实例。

  4. Use/Modify我写的ScriptableWMPlayer。它嵌入了 Windows Media Player ActiveX 控件并具有一些基本的命令行控件。2

1As of 2011 党的官方说法是这是设计使然。

2欢迎提出请求和错误报告。