link2346 link2347 link2348 link2349 link2350 link2351 link2352 link2353 link2354 link2355 link2356 link2357 link2358 link2359 link2360 link2361 link2362 link2363 link2364 link2365 link2366 link2367 link2368 link2369 link2370 link2371 link2372 link2373 link2374 link2375 link2376 link2377 link2378 link2379 link2380 link2381 link2382 link2383 link2384 link2385 link2386 link2387 link2388 link2389 link2390 link2391 link2392 link2393 link2394 link2395 link2396 link2397 link2398 link2399 link2400 link2401 link2402 link2403 link2404 link2405 link2406 link2407 link2408 link2409 link2410 link2411 link2412 link2413 link2414 link2415 link2416 link2417 link2418 link2419 link2420 link2421 link2422 link2423 link2424 link2425 link2426 link2427 link2428 link2429 link2430 link2431 link2432 link2433 link2434 link2435 link2436 link2437 link2438 link2439 link2440 link2441 link2442 link2443 link2444 link2445 link2446 link2447 link2448 link2449 link2450 link2451 link2452 link2453 link2454 link2455 link2456 link2457 link2458 link2459 link2460 link2461 link2462 link2463 link2464 link2465 link2466 link2467 link2468 link2469 link2470 link2471 link2472 link2473 link2474 link2475 link2476 link2477 link2478 link2479 link2480 link2481 link2482 link2483

Форум — Ответы     (  К темам )
 ?  DDV: Как воспроизвести wav из exe при помощи PlaySound? (13-12-2002 16:52:55)
Не могу воспроизвести звук PlaySound'ом. Какие надо передать в него параметры для воспроизведения wav из exe?
 Павел (13-12-2002 18:08:46)
#include <mmsystem.h>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
PlaySound("C:\\ProgramFiles\\NetMeeting\\TestSnd.wav" ,NULL,SND_FILENAME|SND_ASYNC);
}
 Alex (13-12-2002 18:47:46)
BOOL PlaySound(
LPCSTR pszSound,
HMODULE hmod,
DWORD fdwSound)

Функция PlaySound API Windows воспроизводит звук указанного волнового файла,
или звука системного события, или звука из ресурса.
Параметр pszSound представляет собой строку с нулевым символом в конце и
определяет воспроизводимый звук.
В зависимости от значений флага fdwSound (SND_FILENAME, SND_ALIAS или SND_RESOURCE)
параметр pszSound может определять имя волнового файла, псевдоним системного события
или идентификатор ресурса. Если ни один из этих флагов не указан, функция ищет
в реестре Windows или в файле WIN.INI указанное имя звука.
Если звук найден, то он воспроизводится. Если звук не найден, то параметр pszSound
интерпретируется как имя файла.
Звук, указанный параметром pszSound, должен помещаться в доступную память и должен
подходить для установленного драйвера устройства воспроизведения волновых файлов.
Функция PlaySound ищет файл звука в следующих каталогах: текущем, каталоге Windows,
системном каталоге Windows, каталогах, перечисленных в переменной среды PATH,
в списке каталогов, предоставляемых сетью.
Если указанный звук не находится, функция PlaySound воспроизводит системный звук по умолчанию.
Если функция не может найти и его, то воспроизведения не будет, а вернется значение false.
Если параметр pszSound задан равным 0, то воспроизведение любого волнового файла прерывается.
Для прерывания воспроизведения звука, не связанного с волновым файлом, надо указывать
SND_PURGE в параметре fdwSound.
Параметр hmod используется только при параметре fdwSound равном SND_RESOURCE.
В этом случае hmod является дескриптором выполняемого файла, содержащего ресурс,
который должен загружаться. В противном случае значение hmod задается равным 0.

Параметр fdwSound задает флаги воспроизведения звука.
Флаги могут комбинироваться друг с другом операцией ИЛИ "|".
Возможны следующие значения параметра:

SND_APPLICATION Звук воспроизводится с использованием установок приложения.
SND_ALIAS Параметр pszSound определяет псевдоним системного события в реестре Windows
или в файле WIN.INI. Нельзя использовать совместно с SND_FILENAME и SND_RESOURCE.
SND_ALIAS_ID Параметр szSound является предопределенным идентификатором звука.
SND_ASYNC Звук воспроизводится асинхронно и функция PlaySound возвращается немедленно
после начала воспроизведения. Чтобы прекратить асинхронное воспроизведение
волнового файла, надо вызвать PlaySound с параметром pszSound, равным 0.
SND_FILENAME Параметр pszSound является именем файла.
SND_LOOP Воспроизведение звука постоянно повторяется, пока не вызовется PlaySound
с параметром pszSound, равным 0. Одновременно надо указать флаг SND_ASYNC
асинхронного воспроизведения звука.
SND_MEMORY Файл звука события загружен в память. В этом случае параметр pszSound
должен указывать на образ звука в памяти.
SND_NODEFAULT Звук события, кроме звука по умолчанию. Если указанный звук не найден,
PlaySound вернется, не воспроизводя звук по умолчанию.
SND_NOSTOP Если заданный звук не может быть воспроизведен, поскольку ресурсы,
необходимые для воспроизведения, заняты воспроизведением другого звука,
функция PlaySound немедленно вернет false, не воспроизводя заданного звука.
Если данный флаг не указан, функция PlaySound пытается остановит воспроизведение
другого звука, чтобы устройство могло быть использовано для воспроизведения
нового звука.
SND_NOWAIT Если драйвер занят, функция сразу вернется без воспроизведения заданного звука.
SND_PURGE Останавливается воспроизведение любых звуков, вызванных в данной задаче.
Если pszSound не 0, останавливаются все экземпляры указанного звука.
Если pszSound равен 0, то останавливаются все звуки, связанные с данной задачей.
Отдельно надо указать дескриптор для остановки событий SND_RESOURCE.
SND_RESOURCE Параметр pszSound является идентификатором ресурса. Параметр hmod должен
указывать на источник ресурса.
SND_SYNC Синхронное воспроизведение звука события. Функция PlaySound возвращается
только после окончания воспроизведения.

Функция PlaySound при успешном выполнении возвращается true, в противном случае — false.
Приведем примеры использования функции PlaySound. Не забудьте, что для ее использования
в файл должна быть включена директива

#include < mmsystem.hpp>

PlaySound("c:\\windows\\media\\Звук Microsoft.wav", 0,SND_ASYNC);

воспроизводит асинхронно и однократно стандартный звук Microsoft,
который вы обычно можете слышать при открытии Windows.

PlaySound('SystemStart',0,SND_ASYNC);

воспроизведет звук (возможно, тот же самый), установленный как звук при старте системы,
по его системному псевдониму.

PlaySound("c:\\windows\\media\\Звук Microsoft.wav", 0,SND_ASYNC | SND_LOOP);

многократно асинхронно воспроизводит стандартный звук Microsoft, начиная его снова и снова,
как только он заканчивается. При таком операторе надо предусмотреть в приложении какую-нибудь
кнопку, по которой воспроизведение прерывается заданием нового звука или выполнением оператора

PlaySound(0,0, SND_PURGE);

Полезно также ввести аналогичный оператор в обработчик события формы OnCloseQuery.