2012-04-11 14 views
5

¿Es posible que un programa vb.net suene el altavoz interno de la PC? usted sabe el que produce C \a BELL He intentado beep(), pero esto solo produce el sonido de error en la tarjeta de sonido. también he intentadovb.net Sonido de sistema de sistema en XP

<Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint:="Beep", SetLastError:=True, _ 
CharSet:=Runtime.InteropServices.CharSet.Unicode, ExactSpelling:=True, _ 
CallingConvention:=Runtime.InteropServices.CallingConvention.StdCall)> _ 
Public Shared Function _ 
    aBeep(ByVal dwFreq As Integer, ByVal dwDuration As Integer) _ 
    As Boolean 
End Function 

Con ninguna alegría al parecer, su único bien en Vista y superiores. ¿Alguna sugerencia?

+1

Usted sabe que no todos las computadoras incluso * tienen * un altavoz de hardware incorporado como el que describes, ¿verdad? Por lo tanto, es probable que este programa no funcione como se espera en una gran cantidad de casos, especialmente con las máquinas baratas que se encuentran en entornos corporativos. –

+1

Además, ¿es este Windows XP de 64 bits? Porque recuerdo por último (ha pasado mucho tiempo desde que utilicé XP), la función ['Beep'] (http://msdn.microsoft.com/en-us/library/ms679277.aspx) provocó la emisión de un pitido desde el altavoz del sistema interno, como describes. Esto contrasta con la función 'MessageBeep', que sonaría desde la tarjeta de sonido si está conectada. Las versiones de 64 bits de XP y Windows Vista fueron las primeras en romper este comportamiento. –

+0

Maldita sea, estoy en una versión de 64 bits ... supongo que mi usuario solo tendrá que usar auriculares ... Ta – Toby

Respuesta

3

Usando el espacio de nombres My en VB.NET, puede obtener acceso al audio yendo a través de My.Computer.Audio. Esto tiene un método Play con varias sobrecargas que le permiten pasar un sonido .wav por ubicación de archivo o como una matriz de bytes o Stream, pero también tiene un método PlaySystemSound que toma un enum, uno de los cuales es Beep. Por lo que la línea completa para reproducir este sonido es:

My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep) 

No hay garantías, pero ya que es parte del marco .Net creo que este trabajo debe en XP y Vista ...

+0

Esto solo da el mensaje de advertencia "doop" sobre la tarjeta de sonido, gracias a – Toby

+0

no tengo una copia de Reflector a mano, pero estaría dispuesto a apostar a que la función simplemente envuelve la función Win32 'Beep', que, como ya hemos discutido, no funciona en las versiones de 64 bits de Windows XP. También vea: http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx –

+0

@CodyGray It llama a MessageBeep en user32.dll – PhilPursglove

Cuestiones relacionadas