2010-06-15 3 views

Respuesta

8

prueba este

uses MMSystem; 

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

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

I como éste sndPlaySound ('ding.wav', SND_ASYNC); – Tom

+4

¡Asegúrese de escribir su propia función "AppBeep", no distribuya llamadas a sndPlaySound (hardcodedFilenameHere) en toda su aplicación! –

9

divertido usted debe preguntar. Estaba leyendo acerca de la historia del sonido de Windows. La Ley de Estadounidenses con Discapacidades forzó a Beep API a no cambiar en los últimos 20 años.

http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx

Para Windows 7, hemos resuelto el problema por completo - nos cambiamos toda la funcionalidad que solía ser contenido en Beep.sys en el sistema de modo de usuario suena agente - ahora, cuando llama a la API Beep() en lugar de manipulando el chip 8254 la llamada es reencaminada a un agente en modo usuario que realmente reproduce los sonidos.

Así que la respuesta corta es: Obtenga Windows 7. Una respuesta más larga sería: No use la señal de sonido. Haz un pitido y juega como si tocases cualquier otro ruido.

+1

¿No cree que una actualización del sistema operativo es excesiva para querer cambiar el pitido? –

+1

Bueno, @Ken, si quieres llamar 'Beep' específicamente * y * quieres un sonido diferente, entonces un sistema operativo más nuevo es tu única opción, y por lo tanto no exagerar. –

+1

Um ... @Rob, si está tan decidido a usar Beep() específicamente que prefiere cambiar su sistema operativo que cambiar el código para usar otra cosa, sospecho que tiene un tornillo suelto en alguna parte. ;-) –

9

Si desea utilizar los pitidos "estándar" utilizado por Windows cuando se muestra un cuadro de mensaje, puede llamar Windows.MessageBeep(MessageID) donde Messageid mapas a los mismos valores que el icono de mensaje para los identificadores (MB_OK, MB_ERROR etc).

Un problema con esto es que los usuarios pueden asignar ningún sonido, o ningún sonido a determinados identificadores.

+3

¡Las personas que apagan los sonidos no son un problema! Ciertamente no debería ser. Su interfaz de usuario no debe depender de los sonidos. Hay personas que no escuchan sonidos, incluso cuando Windows todavía está configurado para hacerlos ... –

+0

@Marjan De hecho, no debería ser así, debería ser completamente del usuario de la computadora. El uso de MessageBeep hace que el programa funcione más como el propio Windows, que generalmente es algo bueno –

Cuestiones relacionadas