ビープ音
DelphiでBeep手続きを使うと標準の警告音を鳴らすことができますが、これはサウンドボードが入っていれば、Chord.wavか何かが再生されます。つまりホントのビープ音(ブザー)は鳴りません。
どうしてもブザーを鳴らせたいときは、API関数を使う必要があります。WIN32でもBeep関数があるのでこれを使うとブザーを鳴らすことができます。API関数のBeepはWindowsモジュールに含まれていないので、エディタで宣言を追加してやる必要があります。サンプルを下に示します。
Beep(Win32 API)の使用例
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ Win32 API関数の宣言 }
function Beep(dwFreq: LongWord; dwDuration: LongWord): LongBool; stdcall; external 'Kernel32.dll';
{ ビープ音を鳴らす }
procedure TForm1.Button1Click(Sender: TObject);
var
Freq, Duration: LongWord;
begin
Freq := StrToInt(Edit1.Text); // Hz
Duration := StrToInt(Edit2.Text); // ms
Beep(Freq, Duration);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close
end;
end. |