Desde que migrei de Clipper para Delphi não uso este recurso em minhas aplicações. Primeiro porque o Windows oferece sons mais sofisticados e em segundo lugar porque eu realmente não sabia como fazer (verdade!). Recentemente, em uma visita ao news da borland encontrei as rotinas abaixo e achei muito interessantes. Então resolvi disponibilizá-las aqui. procedure Sound(Freq: Word); asm MOV DX, AX IN AL, $61 MOV AH, AL AND AL, 3 JNE @@1 MOV AL, AH OR AL, 3 OUT $61, AL MOV AL, $B6 OUT $43, AL @@1: MOV AX, DX OUT $42, AL MOV AL, AH OUT $42, AL end; procedure NoSound; asm IN AL, $61 AND AL, $FC OUT $61, AL end; procedure DoBeep(Freq, Duration: LongWord); begin if Win32Platform = VER_PLATFORM_WIN32_NT then Windows.Beep(Freq, Duration) else begin Sound(1193181 div Freq); Sleep(Duration); NoSound; end; end; Se você não entendeu as rotinas, eis um resumo: Sound: Inicia um som com uma determinada freqüência (hertz). NoSound: Interrompe o som iniciado por Sound. DoBeep: Esta rotina verifica se o sistema operacional é o Windows NT. Se for, chama a API Windows.Beep. Caso contrário chama Sound, aguarda e, chama NoSound.
O conteúdo desta página pode ajudar alguém? Compartilhe!