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 ddk与wdk

Delphi 线程同步(线程安全)

Delphi中tapplicationevents控件的用途与使用方法

Delphi access中只取时间的日期部分的函数

Delphi多线程程序示例

Delphi twebbrowser get html source after ajax load

最简单的Delphi程序(控制台)

Delphi 获取文件创建时间

Delphi 创建大窗口

Delphi 如何将bitmap位图与base64字符串相互转换

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



打赏

取消

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

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

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

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

评论

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