2010-06-15 27 views

Trả lời

8

Hãy thử điều này một

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

Tôi thích một sndPlaySound ('ding.wav', SND_ASYNC) này; – Tom

+4

Hãy chắc chắn để viết chức năng của riêng bạn "AppBeep", không phân tán cuộc gọi đến sndPlaySound (hardcodedFilenameHere) trong suốt ứng dụng của bạn! –

9

vui bạn nên tự hỏi. Tôi chỉ đọc về lịch sử tiếng bíp của cửa sổ. Hành động của người Mỹ với người khuyết tật đã buộc API Beep không thay đổi trong 20 năm qua.

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

Đối với Windows 7, chúng ta giải quyết vấn đề hoàn toàn - chúng tôi đã chuyển tất cả các chức năng rằng từng là chứa trong Beep.Sys vào sử dụng hệ thống chế độ âm thanh chất - bây giờ khi bạn gọi Beep() API thay vì thao tác chip 8254 cuộc gọi là được định tuyến lại thành một tác nhân chế độ người dùng mà thực sự phát âm thanh.

Vì vậy, câu trả lời ngắn gọn là: Nhận Windows 7. Câu trả lời dài hơn sẽ là: Không sử dụng tiếng bíp. Nhận một tiếng bíp và chơi nó như bạn muốn chơi bất kỳ tiếng ồn khác.

+1

Bạn không nghĩ rằng một nâng cấp hệ điều hành là quá mức cần thiết cho muốn thay đổi tiếng bíp? –

+1

Vâng, @Ken, nếu bạn muốn gọi 'Beep' cụ thể * và * bạn muốn có âm thanh khác, thì hệ điều hành mới hơn là lựa chọn duy nhất của bạn và do đó không quá mức cần thiết. –

+1

Um ... @Rob, nếu bạn có ý định sử dụng Beep() đặc biệt là bạn muốn thay đổi hệ điều hành của bạn thay vì mã của bạn để sử dụng cái gì khác, tôi nghi ngờ bạn có một ốc vít ở đâu đó. ;-) –

9

Nếu bạn muốn sử dụng tiếng bíp "tiêu chuẩn" được sử dụng bởi Windows khi một MessageBox được hiển thị, bạn có thể gọi Windows.MessageBeep(MessageID) nơi MessageID bản đồ với các giá trị tương tự như id biểu tượng cho MessageBox (MB_OK, MB_ERROR vv).

Một vấn đề với điều này là người dùng có thể ánh xạ bất kỳ hoặc không có âm thanh nào đến các id cụ thể.

+3

Người tắt âm thanh không phải là một vấn đề! Nó chắc chắn không nên. Giao diện người dùng của bạn không nên dựa vào âm thanh. Có những người ở đó mà không nghe thấy âm thanh, ngay cả khi Windows vẫn được cấu hình để làm cho họ ... –

+0

@Marjan Thật vậy nó không nên - nó phải được hoàn toàn lên đến người dùng máy tính. Sử dụng MessageBeep làm cho chương trình hoạt động giống Windows hơn, thường là một điều tốt –

0

Bạn có thể thay thế các cuộc gọi tiếng bíp bằng cách thực hiện ET BEEP có trình chỉnh sửa cho tất cả các loại âm thanh lạ.

http://www.encodeteam.com/beep.htm

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