2012-04-11 31 views
5

Có thể có một chương trình vb.net phát âm thanh trong loa của PC không? bạn biết một trong những sản xuất của C \a BELL Tôi đã thử beep(), nhưng điều này chỉ tạo ra âm thanh lỗi trên card âm thanh. Tôi cũng đã thửvb.net hệ thống âm thanh bíp trên 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 

Không có niềm vui nào dường như chỉ tốt trên Vista trở lên. Bất kỳ đề xuất nào?

+1

Bạn biết rằng không phải tất cả máy tính thậm chí * có * một loa phần cứng tích hợp như loa bạn mô tả, đúng không? Vì vậy, chương trình này có thể sẽ không thực hiện như mong đợi trong một số lượng lớn các trường hợp, đặc biệt là với các máy giá rẻ được tìm thấy trong môi trường doanh nghiệp. –

+1

Ngoài ra, đây có phải là Windows XP 64 bit không? Bởi vì cuối cùng tôi nhớ (đã lâu rồi kể từ khi tôi sử dụng XP), chức năng ['Bíp '] (http://msdn.microsoft.com/en-us/library/ms679277.aspx) gây ra tiếng bíp phát ra từ loa hệ thống nội bộ, như bạn mô tả. Điều này trái ngược với chức năng 'MessageBeep', sẽ phát ra tiếng bíp từ card âm thanh nếu được gắn vào. Phiên bản 64 bit của XP và Windows Vista là phiên bản đầu tiên phá vỡ hành vi này. –

+0

Chết tiệt, tôi đang sử dụng phiên bản 64 bit ... đoán người dùng của tôi sẽ chỉ phải đeo tai nghe ... Ta – Toby

Trả lời

3

Sử dụng không gian tên My trong VB.NET, bạn có thể truy cập âm thanh bằng cách đi qua My.Computer.Audio. Phương thức này có phương thức Play với một số tình trạng quá tải cho phép bạn truyền âm thanh .wav theo vị trí tệp hoặc dưới dạng mảng Byte hoặc Luồng, nhưng cũng có phương thức PlaySystemSound mất enum, một trong số đó là Beep. Vì vậy, toàn bộ dòng để chơi âm thanh này là:

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

Không đảm bảo nhưng vì nó là một phần của .Net framework Tôi nghĩ rằng công việc này nên trên XP và Vista ...

+0

Điều này chỉ cung cấp thông điệp cảnh báo "doop" trên thẻ âm thanh, mặc dù – Toby

+0

Tôi không có một bản sao của Reflector có ích, nhưng tôi sẵn sàng đặt cược chức năng đó chỉ cần kết thúc chức năng Win32 'Beep', như chúng ta đã thảo luận, không hoạt động trên các phiên bản Windows XP 64 bit. Đồng thời xem: http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx –

+0

@CodyGray It gọi MessageBeep trong user32.dll – PhilPursglove

Các vấn đề liên quan