【发布时间】:2014-06-27 17:25:59
【问题描述】:
我在 Windows 上运行 Lazarus。我真的很想让程序“哔”。看来您可以在 Pascal 中使用:
windows.beep(300,500);
但不是在拉撒路!我可以使用其他命令吗?
更新:
sysutils.beep()
这可行,但我真的很想设置声音的频率和持续时间
【问题讨论】:
我在 Windows 上运行 Lazarus。我真的很想让程序“哔”。看来您可以在 Pascal 中使用:
windows.beep(300,500);
但不是在拉撒路!我可以使用其他命令吗?
更新:
sysutils.beep()
这可行,但我真的很想设置声音的频率和持续时间
【问题讨论】:
Afaik 这是一个可以使用很长时间的功能。 (Dev Pascal 已经十多岁了)。
不同的是,Lazarus 不会像 Delphi 那样自动将 Windows 添加到 uses 子句中。
【讨论】:
use Windows; 修复了它。谢谢!
如果这个函数没有在 Lazarus 中声明,你可以这样声明:
function Beep(dwFreq, dwDuration: DWORD): BOOL; stdcall; external 'kernel32.dll';
【讨论】:
beep(300,500);一样调用
在 Lazarus 中创建一个新项目并添加一个按钮。将 windows 单元添加到使用列表中。 在按钮默认事件中输入您的代码:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
windows; // added by manually
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
n,
freq,dur : integer;
begin
Randomize;
for n:=1 to 100 do
begin
windows.Beep(random(1000)+n,random(100)+100);
end;
end;
end.
【讨论】: