当前位置:首页 > 操作系统 > Windows

delphi报警声音 Beep、MessageBeep 和 Windows.Beep

 

 

转自:http://blog.csdn.net/yunqian09/article/details/5554527

 

我的办法,增加一个timer 设置间隔100ms,通过timer的使能否,控制报警声音开关

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Windows.Beep(1200+i_f,10+i_f);
   if i_f<2000 then
   begin
      inc(i_f);
   end
end;

 

 

===============================================

Delphi 在 SysUtils 单元定义 Beep 方法, 可以发出一个声音, 一般用于提醒和调试.
Beep 其实是调用的 API 函数: MessageBeep(MB_OK); 
MessageBeep 有下面几种用法可以调用几种不同的声音文件:


MessageBeep(MB_OK);
MessageBeep(MB_ICONHAND);
MessageBeep(MB_ICONQUESTION);    {这个不响, 不知道为什么}
MessageBeep(MB_ICONEXCLAMATION);
MessageBeep(MB_ICONASTERISK);
MessageBeep($FFFFFFFF);          {同 MessageBeep(MB_OK);}


Beep 同时也是一个 API 函数, 它可以指定声音的高度和长度; 因为和 SysUtils.Beep 重名了, 所以应该这样调用:
Windows.Beep(音高, 长度);
譬如: Windows.Beep(440, 2000); 会把一个国际标准音(440HZ)演奏 2 秒钟.
另外第一个参数的取值范围是: $25 - $7FFFF.

音频表在http://www.cnblogs.com/del/archive/2008/10/22/1316380.html 
下面的程序会演奏<奥运会主题歌>的第一句:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, <a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>s,
  Dialogs, StdCtrls;

type
  T<a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>1 = class(T<a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>)
    Button1: TButton;
    <a href="http://www.xuedelphi.cn/" title="procedure" ref="nofollow">procedure</a> Button1Click(Sender: TObject);
  end;

var
  <a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>1: T<a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>1;

implementation

{$R *.dfm}

<a href="http://www.xuedelphi.cn/" title="procedure" ref="nofollow">procedure</a> T<a href="http://www.xuedelphi.cn/" title="Form" ref="nofollow">Form</a>1.Button1Click(Sender: TObject);
const
  t = 800;
<a href="http://www.xuedelphi.cn/" title="begin" ref="nofollow">begin</a>
  Windows.Beep(330, t);
  Windows.Beep(392, t);
  Windows.Beep(262, t*2);

  Windows.Beep(294, t);
  Windows.Beep(330, t);
  Windows.Beep(196, t*2);

  Windows.Beep(262, t);
  Windows.Beep(294, t);
  Windows.Beep(330, t);
  Windows.Beep(392, t);
  Windows.Beep(294, t*4);
end;

end.

 var   
      I   :   Integer;   
  begin   
      for   I   :=   0   to   1000   do   
          Windows.Beep(1200   +   I,   10   +   I);   
  end;   
    
  在机器发出声音的时候,窗体是无法进行任何操作的

=====================================

如果你要播放基本的系统声音,则要用适当的参数调用MessageBeep。如果你要用扬声器发声,就调用MessageBeep(-1);。

  要播放一个WAV声音,你可以使用对象TmediaPlayer,但如果你要快速播放,最简单的方法是调用API函数sndPlaySound(在mmsystem单元中声明)。

  例如:
              procedure TForm1.Button1Click(Sender: TObject);
              begin
                sndPlaySound(‘C:/Windows/Media/Tada.wav‘,
                  SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
              end;
              procedure TForm1.Button2Click(Sender: TObject);
              begin
                sndPlaySound(nil, 0); //停止发音
              end;
            如果你要经常播放一种声音,就应该考虑把文件载入内存并从内存中播放:
              var
                tada: string;
              procedure TForm1.Button1Click(Sender: TObject);
              begin
                sndPlaySound(Pointer(tada), SND_MEMORY
                  Or SND_NODEFAULT Or SND_ASYNC);
              end;
              initialization
                tada := LoadFile(‘C:/Windows/Media/Tada.wav‘);
              finalization
                tada := ‘; //释放字符串占用的内存。
              end.

原文:http://www.cnblogs.com/zhangzhifeng/p/5662877.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐