delphi pc喇叭发声


本文整理自网络,侵删。

 

Procedure pcBeep(nFreq,nDura: Word);         //pc喇叭发声
var
  VerInfo: TOSVersionInfo;
  nStart: DWord;
begin
  VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
  GetVersionEx(VerInfo);
    if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
      Windows.Beep(nFreq, nDura)
    else
    begin
      Asm
        push bx
        in al,$61
        mov bl,al
        and al,3
        jne @@Skip
        mov al,bl
        or al,3
        out $61,al
        mov al,$b6
        out $43,al
        @@Skip:
        mov ax,nFreq
        out $42,al
        mov al,ah
        out $42,al
        pop bx
      end;
      nStart:=GetTickCount;
      repeat
        Application.ProcessMessages;
      Until GetTickCount > nStart + nDura;
      asm
        IN AL,$61
        AND AL,$FC
        OUT $61,AL
      end;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
pcBeep(300,3000);
end;

相关阅读 >>

Delphi xe 取得硬盘序列号代码

Delphi编程之桌面图标设置

Delphi 从字符串中提取单词的函数

Delphi实现的sunday字符串搜索算法

Delphi 判断文件是否被占用

Delphi 实现php的urlencode编码效果

Delphi 获取所有应用程序窗口标题 类似任务管理器

Delphi 随机生成汉字

Delphi high 返回数组下标的最大值

Delphi调用命令行命令并获取返回信息

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...