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

  • Автор темы Автор темы Dragokas
  • Дата начала Дата начала
  • Теги Теги
    vb6

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
8,017
Решения
12
Реакции
6,787
Простой пример аудио-проигрывателя на основе API-функции mciSendString

Функции:
  • Воспроизвести
  • Приостановить
  • Продолжить
  • Остановить
VB.NET / VBA:
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
 
Последнее редактирование:
Назад
Сверху Снизу