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 opendialog1 打开多个文件

Delphi 遍历所有目录和子目录下的文件名(可按后缀名遍历)

Delphi 得到指定文件夹内文件名

Delphi添加任务栏右键菜单

Delphi idhttp造成程序假死的解决办法

Delphi 获取系统所有磁盘盘符

Delphi如何粘贴html格式文本到windows剪切板

Delphi xe mysql数据库操作类 mysqlhelper

Delphi firedac mysql 连接

Delphi 获取当前目录下所有文件名3

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



打赏

取消

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

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

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

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

评论

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