Как воспроизвести wav-файл в Delphi?

Какие функции доступны в Delphi для воспроизведения звукового файла?

Простой. Используйте MMsystem.PlaySound. Используйте его так: PlaySound (pchar (FileName), 1, SND_ASYNC или SND_FILENAME);

Gravity 18.04.2016 12:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
21
1
40 768
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Полный учебник доступен по адресу: http://sheepdogguides.com/dt3f.htm

Это немного старовато. Но должно работать.

С помощью функции sndPlaySound из WIN32-API (Unit MMSystem):

sndPlaySound ('C: \ Windows \ Media \ Tada.wav', SND_ASYNC);

sndPlaySound существует только для обратной совместимости

Gravity 18.04.2016 12:43
Ответ принят как подходящий

Вот самый быстрый способ:

uses MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
begin
  sndPlaySound('C:\Windows\Media\Tada.wav',
    SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  sndPlaySound(nil, 0); // Stops the sound
end;

sndPlaySound существует только для обратной совместимости

Gravity 18.04.2016 12:42

Работает ли эта процедура в FireMonkey? Если да, то будет ли он работать на других платформах, кроме Windows?

Shaun Roselt 07.10.2016 14:11

SND_LOOP будет воспроизводить песню бесконечное количество раз

Soon Santos 22.05.2020 05:29

На этой странице довольно хорошо объясняется, как использовать функцию sndPlaySound и как встроить wav-файл в качестве ресурса: http://www.latiumsoftware.com/en/delphi/00024.php

Ссылка больше не актуальна.

Jeroen Wiert Pluimers 18.12.2013 19:47

Жаль, но к нему все же можно получить доступ через archive.org: web.archive.org/web/20080509074922/http://…

Name 19.12.2013 20:57

Простой:

procedure PlaySoundFile(FileName: string);
begin
 if FileExists(FileName)
 then PlaySound(pchar(FileName), 0, SND_ASYNC or SND_FILENAME);  

 { Flags are:
    SND_SYNC  =0 = Start playing, and wait for the sound to finish
    SND_ASYNC =1 = Start playing, and don't wait to return
    SND_LOOP  =8 = Keep looping the sound until another sound is played  }
end;

Люди также цитируют sndPlaySound, но это только для обратной совместимости. Так что не используйте это!

Вас также может заинтересовать это:

procedure PlayWinSound(SystemSoundName: string);
begin
 Winapi.MMSystem.PlaySound(PChar(SystemSoundName), 0, SND_ASYNC);
end;

{ All available constants are defined in the registry under the path HKEY_CURRENT_USER -> AppEvents -> Schemes -> Apps -> .Default. 
  System sounds:
    SystemEXCLAMATION        - Note)
    SystemHAND               - Critical Stop)
    SystemQUESTION           - Question)
    SystemSTART              - Windows-Start)
    SystemEXIT               - Windows-Shutdown)
    SystemASTERIX            - Star)
    RESTOREUP                - Enlarge)
    RESTOREDOWN              - Shrink)
    MENUCOMMAND              - Menu)
    MENUPOPUP                - Pop-Up)
    MAXIMIZE                 - Maximize)
    MINIMIZE                 - Minimize)
    MAILBEEP                 - New Mail)
    OPEN                     - Open Application)
    CLOSE                    - Close Application)
    APPGPFAULT               - Program Error)
    Asterisk                 - played when a popup alert is displayed, like a warning message.
    Calendar Reminder        - played when a Calendar event is taking place.
    Critical Battery Alarm   - played when your battery reaches its critical level.
    Critical Stop            - played when a fatal error occurs.
    Default Beep             - played for multiple reasons, depending on what you do. For example, it will play if you try to select a parent window before closing the active one.
    Desktop Mail Notif       - played when you receive a message in your desktop email client.
    Device Connect           - played when you connect a device to your computer. For example, when you insert a memory stick.
    Device Disconnect        - played when you disconnect a device from your computer.
    Device Connect Failed    - played when something happened with the device that you were trying to connect.
    Exclamation              - played when you try to do something that is not supported by Windows.
    Instant Message Notif    - played when you receive an instant message.
    Low Battery Alarm        - played when the battery is running low.
    Message Nudge            - played when you receive a BUZZ in an instant message.
    New Fax Notification     - played when you receive a fax via your fax-modem.
    New Mail Notification    - played when you receive an email message.
    New Text Message Notif   - played when you receive a text message.
    NFP Completion           - played when the transfer of data via NFC between your Windows device and another device is completed.
    NFP Connection           - played when your Windows device is connecting to another device via NFC.
    Notification             - played when a default notification from a program or app is displayed.
    System Notification      - played when a system notification is displayed.  }

sndPlaySound - Почему бы не использовать? xtremevbtalk.com/general/…

Gravity 18.04.2016 12:42

Вы можете добавить ссылку MSDN: msdn.microsoft.com/en-us/library/dd743680%28v=vs.85%29.aspx

EMBarbosa 28.06.2016 00:29

Тогда почему Embarcadero до сих пор использует sndPlaySound в своих новейших проектах?

Shaun Roselt 07.10.2016 14:09

@ ShaunRoselt - в Delphi все еще существует огромное количество унаследованного кода. Но после 15 лет воплей разработчиков Embarcadero услышал. Похоже, они начали исправлять огромное количество ошибок, начиная с обновления Delphi Berlin 1. До этой версии они ставили ошибки только в Delphi :) :)

Gravity 08.10.2016 10:06

не используйте sndPlaySound. он есть только для совместимости: xtremevbtalk.com/general/…

Gravity 07.11.2019 17:43

Другие вопросы по теме