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.

时间: 2024-11-06 03:14:37

delphi报警声音 Beep、MessageBeep 和 Windows.Beep的相关文章

[irving] C# Windows Beep 调用声音文件

方法一:Console.Beep(); 方法二:可以用Console.WriteLine("/a");来代替Beep(). MSDN:http://msdn.microsoft.com/zh-cn/library/System.Console.Beep(v=vs.110).aspx [irving] C# Windows Beep 调用声音文件,码迷,mamicode.com

zabbix开启报警声音 网页也可以有声音

用过nagios的兄弟应该用过 Nagios Checker,当nagios有异常监控,他可以发出报警声音,不过他是浏览器的一个扩展.而zabbix直接自带了这个功能. zabbix右上角的profile(配置)-->messaging-->Frontend messaging勾上.可以选择你需要发出声音的故障的严重性类型.下回有报警便能发出声音了.上图吧,一看就知道~

使用KL26生成0709医疗器械中优先级报警声音波形

直入主题,学习记之~~~ 1,需求分析 根据YY0709 国家医疗器械中优先级报警声音波形要求,如下 2.matlab生成波形 本次使用matlab生成波形,五个正弦波叠加,基频为780HZ,分别取一倍,二倍,三倍,四倍,五倍频叠加,由于使用的是KL26的DAC模块生成波形,则对波形赋值进行了量化,直接附上代码 Fs=200000; %采样率 fc=780; %载波频率 N=0.01; t=0:1/Fs:1/780; carrier=1*sin(2*pi*fc*t); signal = 1*si

Delphi中增强程序的不同Windows版本的兼容性技巧

在开发过程中,一个程序(DLL/EXE)经常需要同时兼容不同版本的Windows(XP.WIN7 ...),但是由于新版本的Windows某些API在旧版本不存在,如果程序使用external引入API,则会导致在旧版本Windows中运行时提示“找不到某某程序文件路径...”."无法加载DLL...",因为在旧版本Windows中运行EXE或DLL,系统会先检测external引入的API,如果找不到某个API,系统会直接报错,无法运行,这时候Delphi提供了关键字 delayed

Delphi - GetUserNameEx(学一下导出Windows API,以及Array Char充当缓冲区的用法,下标必须从零开始)

(* * Author : http://www.michael-puff.de * Date : 2006-03-29 * License : PUBLIC DOMAIN *) function GetUserNameEx(NameFormat: DWORD; lpNameBuffer: LPSTR; var nSize: DWORD): Boolean; stdcall; external 'secur32.dll' Name 'GetUserNameExA'; function GetLo

Delphi中三种方法获取Windows任务栏的高度

第一种:需要引用Windows单元 [delphi] view plain copy ShowMessage(IntToStr(GetSystemMetrics(SM_CYSCREEN)-GetSystemMetrics(SM_CYFULLSCREEN)-GetSystemMetrics(SM_CYCAPTION))); 第二种:需要引用Windows单元 [delphi] view plain copy function GetSystemTaskBarHeight:Integer; var

DELPHI实现关机,兼容全部WINDOWS系统 转

{=======================================================================================================================关闭Windows函数ExitWindowsEx(UINT uFlag,DWORD:dwReserved)说明: 控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwR

DELPHI实现关机,兼容全部WINDOWS系统

转自:http://blog.sina.com.cn/s/blog_611ab6c50100mznx.html {=======================================================================================================================关闭Windows函数ExitWindowsEx(UINT uFlag,DWORD:dwReserved)说明: 控制WINDOWS的开关:如关闭W

window编程beep函数,发出各种频率的声音

#include <windows.h> int main() { while (1) { #if 0 Beep(523, 200); Beep(523, 200); Beep(578, 400); Beep(523, 400); Beep(698, 400); Beep(659, 800); Beep(523, 200); Beep(523, 200); Beep(578, 400); Beep(523, 400); Beep(784, 400); Beep(698, 800); Beep(