zoukankan      html  css  js  c++  java
  • 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, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    const
      t = 800;
    begin
      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.
  • 相关阅读:
    Android SeekBar 垂直滚动条实现——Kotlin
    百度地图JavaScript API——去除左下角LOGO
    C# Socket域名连接
    d
    WPF MVVM手敲简单框架
    WPF播放视频、WPF_MediaElement用法
    C#分割字符,Split(new char[2] { '$', ',' }); 和Split( new string[]{"$",","}, StringSplitOptions.RemoveEmptyEntries); 的小计
    使用CloudFlare给IPv6 VPS提供IPv4+6端口转发服务
    多线程处理和WPF访问UI
    MVC4Html Helper
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5662877.html
Copyright © 2011-2022 走看看