Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Banco de Dados

Sons no alto-falante do micro

Inclua na seção uses: Windows
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.

Observações

Pelo menos no meu caso, a maioria dos usuários não possuem computadores munidos de caixas de som. Para estes casos as rotinas acima seriam a solução se o som for indispensável.

O conteúdo desta página pode ajudar alguém? Compartilhe!