Фоновый плеер для cmd

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем bum, 6 мар 2016.

  1. bum
    Оффлайн

    bum Новый пользователь

    Сообщения:
    2
    Симпатии:
    0
    Мне нужен плеер который бы мог открывать mp3 в фоновом режиме.
    Запуск например может быть такой
    Код (Text):
    start D:\player.exe D:\music.mp3
     
  2. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.493
    Симпатии:
    4.310
    Через nircmd.

    Код (DOS):
    nircmd mediaplay 10000 "D:\music.mp3"
    Число - кол-во миллисекунд воспроизведения.
     
    Последнее редактирование модератором: 6 мар 2016
  3. bum
    Оффлайн

    bum Новый пользователь

    Сообщения:
    2
    Симпатии:
    0
    Спасибо очень помог
     
  4. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.493
    Симпатии:
    4.310
    Придумал вариант на основе mshta (окна hta application на время воспроизведения файла будет свернуто):

    Код (DOS):
    @echo off
    SetLocal EnableExtensions

    set "mp3=c:\windows\media\tada.wav"

    :: кол-во секунд воспроизведения

    set delay=2

    call :PlaySnd "%mp3%" %delay%

    pause
    goto :eof


    :PlaySnd [Path] [Delay]
      set "SndPath=%~1"
      set "SndPath=%SndPath:\=\\%"
      start /min mshta "about:<bgsound id=sound><script>document.all.sound.src = '%SndPath%'</script>"
      set /a delay2=%~2+1
      Timeout /? >NUL 2>&1 & if errorlevel 9009 (>NUL ping -n %delay2% 127.1) else (>NUL Timeout /T %~2 /Nobreak)

      for /f "tokens=2 delims=," %%a in ('tasklist /fo csv /nh /fi "IMAGENAME eq cmd.exe" 2^>NUL') do (
        for /f "UseBackQ skip=2 tokens=2 delims=," %%b in (`wmic process where "ParentProcessId=%%~a and caption='mshta.exe'" get ProcessId /format:csv 2^>NUL`) do (
          for /f "delims=" %%c in ("%%b") do taskkill /f /pid %%c >NUL
      ))
    exit /B
     
    Последнее редактирование: 6 мар 2016
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.493
    Симпатии:
    4.310
    Еще варианты на VBScript:

    1) Для воспроизведения только wav формата:

    Код (vb.net):

    Set oVoice = CreateObject("SAPI.SpVoice")
    set oSpFileStream = CreateObject("SAPI.SpFileStream")
    oSpFileStream.Open "c:\Windows\Media\tada.wav"
    oVoice.SpeakStream oSpFileStream
    oSpFileStream.Close
    oVoice.Speak "Finished Playing wave file."
    --- Объединённое сообщение, 6 мар 2016 ---
    Класс воспроизведения mp3 / wmv / wav ...

    Автор: Xameleon (серый форум)

    1)
    Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием COM-объекта "WMPlayer.OCX" (Windows Media Player). Демонстрируется регулирование баланса и громкости, определение длины записи в секундах. Обратите внимание, что в целом объект обладает значительно большим функционалом (плейлисты, настройка частоты, настройка скорости проигрывания и т.п.), чем показано в этом примере.

    Код (vb.net):
    Set WMPlayer = New WMPlayerClass

    Dim FilePath

    '/// Так же можно указать URl - ссылку на файл в интернете
    FilePath = "C:\WINDOWS\Media\chimes.wav"

    '/// Открываем ресурс
    WMPlayer.OpenMedia FilePath

    '/// Выводим длительность файла
    msgbox "Длительность файла: " & WMPlayer.CurrentMedia.DurationString,vbInformation,"WMPlayerClass"

    '/// проверка изменения громкости
    msgbox "Сейчас будет произведена проверка изменения громкости звука. Эффект эхо. 100% 50% 10%"
    WMPlayer.Settings.Volume = 100
    WMPlayer.Play
    WMPlayer.Settings.Volume = 50
    WMPlayer.Play
    WMPlayer.Settings.Volume = 10
    WMPlayer.Play

    '/// проверка изменения баланса
    MsgBox "Сейчас будет произведена проверка баланса. (левого и правого динамика)",vbInformation,"WMPlayerClass"
    WMPlayer.Settings.Volume = 100
    WMPlayer.Settings.Balance = -100
    WMPlayer.Play
    WMPlayer.Settings.Balance = 100
    WMPlayer.Play

    MsgBox "Проверка завершена.",vbInformation,"WMPlayerClass"

    '/// Класс проигрывателя
    Class WMPlayerClass
        '/// Переменная для хранения ссылки на объект плеера
        Dim WMPlayer
        Private Sub Class_Initialize()
            Set WMPlayer = CreateObject("WMPlayer.OCX")
            WMPlayer.settings.autoStart = False
            WMPlayer.settings.enableErrorDialogs = False
        End Sub

        '/// Свойство возвращает ссылку на объект настроек плеера
        Public Property Get Settings
            Set Settings = WMPlayer.Settings
        End Property

        '/// Метод подключения к ресурсу
        Function OpenMedia(URL)
            '/// Несколько из констант состояния открытия
            Const wmposMediaLoading = 11
            Const wmposMediaLocating = 9
            Const wmposPlaylistOpenNoMedia = 6
            Const wmposMediaOpen = 13
            Const wmposPlaylistOpening = 5
            Const wmposOpeningUnknownURL = 21
            Const wmposUndefined = 0

            '/// Для корректного получения данных о содержимом, нужно открыть ресурс.
            WMPlayer.URL = URL
            '/// Убираем звук      
            WMPlayer.settings.mute=true
            '/// Запускаем на проигрывание
            WMPlayer.controls.Play
            '/// Ждём состояния открытия файла. Если файл открыть не удалось вернётся wmposPlaylistOpenNoMedia
            Do
                WScript.Sleep 10
            Loop Until WMPlayer.OpenState = wmposMediaOpen or WMPlayer.OpenState=wmposPlaylistOpenNoMedia
            '/// Останавливаем проигрывание
            WMPlayer.controls.Stop
            '/// Возвращаем звук
            WMPlayer.settings.mute=false
        End Function

        '/// Свойство возвращает ссылку на параметры открытого файла
        Public Property Get CurrentMedia
            Set CurrentMedia = WMPlayer.CurrentMedia
        End Property

        '/// Метод запуска проигрывания
        Function Play()
            WMPlayer.Controls.Play
            '/// Ожидаем окончания проигрывания (ждём пока плеер не перейдёт в состояние остановки)
            Do
                WScript.Sleep 100
            Loop Until WMPlayer.playState = 1
        End Function
    End Class
    2)
    Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием ActiveX Windows Media Player так, как он используется на HTML-страницах. Пример интересен использованием объекта "htmlfile", который может "эмулировать" HTML-страницу в скриптах, не имеющих графического интерфейса.

    Код (vb.net):
    '/// Создаём класс проигрывателя
    Set WMP = New WindowsMediaPlayerClass

    '/// Открываем и проигрываем файлы
    WMP.Play "C:\Windows\media\chimes.wav"
    WMP.Play "C:\Windows\media\ringin.wav"
    WMP.Play "C:\Windows\media\ding.wav"

    MsgBox "Playing Complete.",vbInformation,"Windows Media Player"

    '/// Класс Windows Media Player-a
    Class WindowsMediaPlayerClass
        '/// Т.к создать Windows Media Player имеет только CLASSID, то создадим его в контейнере HTMLDocument
        Private Document,WMP
     
        '/// Событие инициализации класса
        Private Sub Class_Initialize
            '/// Создаём HTMLDocument
            Set Document = Wscript.CreateObject("htmlfile")
            '/// Выполняем методы Open и Close, чтобы создалось Body
            Document.open
            Document.close
            '/// Создаём с помошью документа объект проигрывателя
            Set WMP = Document.createElement("OBJECT")
            '/// Добавляем его в документ
            Document.body.appendChild WMP
            '/// Указываем его классид ( Кстати таким способом можно создавать и другие объекты имеющие только CLASSID)
            '/// Хотя наверняка есть и более удобные способы
            WMP.classid = "CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
            'WMP.AutoRewind = True
            'WMP.AutoStart = True
        End Sub

        '/// Метод запуска проигрывания файла
        Public Sub Play(FileName)
            '/// Если имя файла не указано, то выходим из процедуры
            if FileName = "" Then Exit Sub
            '/// Передаём имя файла для проигрывания
            WMP.FileName = FileName
            '/// Запуск проигрывания
            WMP.Play
            '/// Запускаем цикл и ждём пока проигрывание остановится
            Do
                '/// Притормаживаем выполнение, чтобы цикл не отнимал 100% процессорного времени
                Wscript.Sleep 100
            Loop Until WMP.PlayState = 0
        End Sub
    End Class
     
    Последнее редактирование: 6 мар 2016
    orderman и Kиpилл нравится это.
  6. Kirik-Helper
    Оффлайн

    Kirik-Helper Пользователь

    Сообщения:
    74
    Симпатии:
    3
    Dragokas, а можно ли готовый файл? А то я в этом ничего не понимаю...
     
  7. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.493
    Симпатии:
    4.310
    Kirik-Helper,
    код в тегах "DOS" - это бат-файлы. Они создаются так: http://safezone.cc/threads/kak-sozdat-batnik-paketnyj-fajl-cmd-bat.23960/
    код в тегах "VB.NET" (на самом деле VBS, просто расцветка красивее) - это сценарии VBScript. Они создаются так: http://safezone.cc/threads/kak-sozdat-fajl-vbs-vbscript.25352/

    Файлы сразу будут готовы к запуску (если я ничего не напутал в коде, и в системе нет никакого косяка).
     
    Последнее редактирование: 15 апр 2016

Поделиться этой страницей