Флаги функции PlaySound

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Флаги функции PlaySound

Сообщение Source » 26.09.2007 (Ср) 20:04

Мне надо, чтобы звук выводился асинхронно и предыдущий вызов проиграло до конца. Ставлю флаги SND_ASYNC + SND_NOSTOP - не работает. SND_NOSTOP - Событие будет проиграно сразу после проигрывания уже играющего события.

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 26.09.2007 (Ср) 20:29

Код: Выделить всё
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long


А это не пойдёт?

AD'onis
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 50
Зарегистрирован: 05.10.2006 (Чт) 20:19
Откуда: не секрет, я б сказал, но забаннят

Сообщение AD'onis » 28.09.2007 (Пт) 16:50

Эта тема уже поднималась (причем недавно :)). Результат поиска:
http://bbs.vbstreets.ru/viewtopic.php?t=30973&highlight=%E7%E2%F3%EA

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 28.09.2007 (Пт) 18:14

Source

Ставлю флаги SND_ASYNC + SND_NOSTOP

А может SND_ASYNC or SND_NOSTOP?

AD'onis
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 50
Зарегистрирован: 05.10.2006 (Чт) 20:19
Откуда: не секрет, я б сказал, но забаннят

Сообщение AD'onis » 28.09.2007 (Пт) 18:47

Mikle
Один фиг, не срабатывает, я тож по-всякому крутился, в итоге нашел другой выход и все :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.09.2007 (Пт) 21:02

Mikle
А какая разница, если числа бин-круглые (а они бин-круглые для флагов)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 29.09.2007 (Сб) 16:16

Сделал RES файл для проигрывания музыки:
Код: Выделить всё
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Dim WaveData() As Byte       ' Буфер для того чтобы удержать звуковой файл.
Private Const SND_ASYNC = &H1   'Асинхронное воспроизведение
Private Const SND_MEMORY = &H4 'lpszSoundName это не имя файла, а адрес в памяти.
Private Sub Command1_Click()
'ResSoundPlay [ ID номер звука ]

'Это можно добавлять также в событие Form_Load // а вообще куда хотите туда и добавляйте.
Dim RetValue As Long
WaveData() = LoadResData("FG", "WAVE") 'Загрузка звукового файла.
RetValue = sndPlaySound(WaveData(0), SND_ASYNC Or SND_MEMORY) 'Воспрозведение.
End Sub

Музыка играет. А вот как остановить?
И еще, по моему mp3 не берет. только wav. От чего это зависит?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 29.09.2007 (Сб) 17:05

А вот как остановить?

Передав 0 в качестве первого аргумента. Не строку "0", а 0. Т.е. передавать нужно vbNullString.

И еще, по моему mp3 не берет. только wav. От чего это зависит?

Ну естественно не берёт. И не будет брать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 30.09.2007 (Вс) 1:54

1. при mciSendString 2 звука сливаются в один (одновременное проигрывание), а мне надо чтобы проиграло первый звук, а за ним второй в фоновом режиме. Может, у команды "play" есть ключи (в поисковике не нашёл)?

2. я так понимаю, что звуковой драйвер всегда свободен для моего приложения (если в нём не проигрывается звук), т.е., если звук того же формата проигрывается в другом приложении, то на занятость драйвера для меня это не влияет?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 53

    TopList