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 锁定系统解锁系统

Delphi tstringbuilder详解

Delphi 获取文件夹路径最后一级文件夹目录名称

Delphi fdquery 验证登录

Delphi 判断字符串是否相同

Delphi异常处理try except语句和try finally语句用法以及区别

Delphi idftp连接

Delphi xe7 取得进程占用内存的两个函数

Delphi firedac 下的 sqlite [9] - 关于排序

Delphi url 中文编解码

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



打赏

取消

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

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

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

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

评论

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