2012-04-11 16 views
5

Ist es möglich, ein vb.net-Programm den internen Lautsprecher des PCs klingen zu lassen? Sie wissen, die, die C produziert \a BELL Ich habe versucht beep(), aber das erzeugt nur den Fehler Sound auf der Soundkarte. habe ich auch versucht,vb.net System Piep Ton auf 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 

Ohne Freude offenbar seine nur gut auf Vista und höher. Irgendwelche Vorschläge?

+1

Sie wissen, dass nicht alle Computer * haben * einen eingebauten Hardware-Lautsprecher wie den, den du beschreibst, oder? Daher wird dieses Programm wahrscheinlich nicht in einer großen Anzahl von Fällen wie erwartet funktionieren, insbesondere mit den billigen Maschinen, die in Firmenumgebungen gefunden werden. –

+1

Ist dieses 64-Bit Windows XP? Da ich mich zuletzt erinnere (es ist lange her, dass ich XP benutzt habe), hat die [Beep-Funktion] (http://msdn.microsoft.com/en-us/library/ms679277.aspx) einen Piepton ausgelöst vom internen Systemlautsprecher, wie du es beschreibst. Dies steht im Gegensatz zur "MessageBeep" -Funktion, die von der Soundkarte piepst, wenn sie angeschlossen ist. 64-Bit-Versionen von XP und Windows Vista waren die ersten, die dieses Verhalten durchbrochen haben. –

+0

Verdammt ich bin auf einer 64-Bit-Version ... denke, mein Benutzer wird nur Kopfhörer tragen müssen ... Ta – Toby

Antwort

3

Mit dem Namespace My in VB.NET können Sie über My.Computer.Audio auf Audio zugreifen. Dies hat eine Play Methode mit einer Anzahl von Überladungen, die es Ihnen ermöglichen, einen .wav-Sound nach Speicherort der Datei oder als Byte-Array oder Stream zu übergeben, aber es hat auch eine PlaySystemSound Methode, die eine enum, von denen Beep ist. So ist die volle Linie diesen Sound zu spielen ist:

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

keine Garantien, aber da es ein Teil von .NET Framework ist denke ich diese sollte Arbeit auf XP und Vista ...

+0

Dies gibt nur die Warnmeldung "Doop" über die Soundkarte, danke, aber – Toby

+0

habe ich nicht eine Kopie von Reflector praktisch, aber ich wette, dass diese Funktion nur die Win32 'Beep'-Funktion umschließt, die, wie wir bereits besprochen haben, nicht auf 64-Bit-Versionen von Windows XP funktioniert. Siehe auch: http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-su-up-with-the-beep-driver-in-windows-7.aspx –

+0

@CodyGray It ruft MessageBeep in user32.dll – PhilPursglove