Hola bulc.
Recuerda que no debes hacer más de una pregunta por hilo:
Guía de estilo (punto
8).
En cuanto a tu primera consulta, es difícil de contestar sin saber que es lo que se está haciendo. Pero no creo que sea problema de la función
PlaySound sino de la lógica de la aplicación.
En cuanto a la segunda, agrega a tu archivo de recursos una línea con el archivo de música que desees poner durante la espera (mp3 en el ejemplo).
Por ejemplo:
Código:
musica RCDATA Musica.mp3
Luego para ejecutar la música:
Código Delphi
[-]
...
uses MMSystem;
procedure PlayMusic;
var
FileName: string;
begin
with TResourceStream.Create(HINSTANCE, 'musica', RT_RCDATA) do
try
FileName:= ExtractFilePath(Application.ExeName) + '@M@u@s@i@[email protected]';
SaveToFile(FileName);
mciSendString('close media', nil,0, 0);
mciSendString(PChar('open "' + FileName + '" alias media'), nil, 0, 0);
mciSendString('play media notify repeat', nil, 0, 0);
finally
DeleteFile(FileName);
Free;
end;
end;
Para parar la ejecución en cualquier momento:
Código Delphi
[-]
...
mciSendString('stop media', nil, 0, Handle);
...
Saludos.