[VB6] Аудио-проигрыватель (mciSendString)

Тема в разделе "Банк полезных кодов", создана пользователем Dragokas, 4 сен 2016.

  1. Dragokas
    Оффлайн

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

    Сообщения:
    4.498
    Симпатии:
    4.313
    Простой пример аудио-проигрывателя на основе API-функции mciSendString

    Функции:
    • Воспроизвести
    • Приостановить
    • Продолжить
    • Остановить
    Код (vb.net):
    Option Explicit
    Public Declare Function mciSendString& Lib "winmm.dll" Alias "mciSendStringA" _
        (ByVal lpstrCommand$, _
        ByVal lpstrReturnString$, _
        ByVal uReturnLength&, _
        ByVal hwndCallback&)
    Private Const MCI_ALIAS As String = "Media_1" '// Любой псевдоним
    Sub main()
        Dim strFileName$
     
        strFileName = "u:\Разная\9-para_normalnih vstavay.mp3" '// Задаем имя аудио-файла
     
        '// Обход ошибки пробелов в имени и пути к файлу
        strFileName = Replace(strFileName, Chr(34), "")
        If InStr(strFileName, " ") <> 0 Then strFileName = Chr(34) & strFileName & Chr(34)
     
        '// Проиграть музыку (по-умолчанию в асинхронном режиме - без ожидания завершения трека)
        PlaySnd strFileName
        'PlaySnd strFileName:=strFileName, ASync:=False
     
        MCISend "Pause " & MCI_ALIAS '// Приостановить
        Stop
     
        MCISend "Resume " & MCI_ALIAS '// Продолжить
        Stop
     
        StopSnd '// Остановить
    End Sub
    Sub StopSnd()
        MCISend "Stop " & MCI_ALIAS '// Останавливаем воспроизведение
        MCISend "Close " & MCI_ALIAS '// Закрываем файл
    End Sub
    Sub PlaySnd(strFileName$, Optional ASync As Boolean = True)
            '// Закрываем файл.
            '// Если он не закрыт, воспроизведение будет продолжено с предыдущей позиции
            '// Seek не использую. Приводит к искажениям в начале воспроизведения на некоторых дорожках.
        MCISend "Close " & MCI_ALIAS
        MCISend "Open " & strFileName & " alias " & MCI_ALIAS '// Присваиваем алиас
        MCISend "Play " & MCI_ALIAS & IIf(ASync, "", " wait")
    End Sub
    Sub MCISend(lpstrCommand$)
        mciSendString lpstrCommand, vbNullString, 0&, 0&
    End Sub
     
    Последнее редактирование: 4 сен 2016

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