Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: WAV без MediaPlayer! Как узнать что педыдущий файл еще проигрываетя?  (Прочитано 4452 раз)
0 Пользователей и 1 Гость смотрят эту тему.
KORVINKORI
Гость
« : 24-05-2009 09:51 » 

Я использую для воспроизведения WAV:

USES mmsystem;
sndPlaySound('C:\TEST.WAV',SND_ASYNC); // PLAY
sndPlaySound('C:\TETS.WAV',SND_ASYNC+SND_LOOP); // Loop Mode (зацикливание)
sndPlaySound(Nil,SND_ASYNC); //STOP


Но у меня в процессе создания программы возникла проблема. Если на воспроизведение приходит команда проигрывать другой файл, предыдущий прерывается  Здесь была моя ладья..., что нежелательно. Как узнать что предыдущий файл еще проигрывается?  Не понял
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #1 : 24-05-2009 10:22 » 

Добавь флаг SND_NOSTOP
Цитата
SND_NOSTOP - If a sound is currently playing, the function immediately returns FALSE, without playing the requested sound.

(MSDN)
Записан
KORVINKORI
Гость
« Ответ #2 : 24-05-2009 12:07 » 

Попробовал!
Действительно первый не останавливается!  Улыбаюсь  Но и второй если подаешь команду раньше не запускается! И звуковое сообщение 'съедается'  Здесь была моя ладья... Есть ли какой нибудь флаг который укажет, что первый файл проигран? Здесь была моя ладья... Не понял
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #3 : 24-05-2009 14:09 » 

KORVINKORI, я не понял, что ты хочешь. Из твоего 1-го поста выходит, что тебе надо, чтобы второй файл нельзя было проиграть, пока не закончится проигрывание 1-го. Отсюда вытекает что то типа:
Код:
If not OpenDialog1.Execute then
  exit;
  While not sndPlaySound(PChar(OpenDialog1.FileName), SND_ASYNC or SND_NOSTOP) do
  begin
    Sleep(500);
    Application.ProcessMessages;
  end;
Записан
KORVINKORI
Гость
« Ответ #4 : 24-05-2009 17:38 » 

zubr! СПАСИБО!!! Все получилось! Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines