Dicas de Delphi - Multimídia
Controlar volume de sons WaveInclua na seção uses: mmSystem
Escrevi três funções que acessam a API do Windows para
controlar o volume de sons wave.
function Wave_SuportaControleVolume: boolean;
var
Caps: TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Caps,
SizeOf(Caps)) = MMSYSERR_NOERROR then
Result := Caps.dwSupport and WAVECAPS_VOLUME <> 0
else
Result := false;
end;
type
TVolume = record
Esquerdo: Word;
Direito: Word;
end;
function Wave_ObterVolume: TVolume;
begin
waveOutGetVolume(integer(WAVE_MAPPER), @Result);
end;
procedure Wave_DefinirVolume(Volume: TVolume);
begin
waveOutSetVolume(integer(WAVE_MAPPER), LongWord(Volume));
end;
A primeira função verifica se o dispositivo Wave instalado
suporta o controle de volume. O retorno desta função é true
em caso positivo.
As duas funções seguintes permitem obter e definir o volume,
respectivamente. O tipo TVolume permite controlar os canais
esquerdo e direito individualmente.
Observações Um bom lembrete! O valor $0000 (zero) indica ausência de som e $FFFF indica o volume máximo. Autor: Daniel P. Guimarães Abrir e fechar o drive de CD-ROMInclua na seção uses: MMSystem
{ Para abrir }
mciSendString('Set cdaudio door open wait', nil, 0, handle);
{ Para fechar }
mciSendString('Set cdaudio door closed wait', nil, 0, handle);Reproduzir um arquivo de som WAV sem o TMediaPlayerInclua na seção uses: MMSystem
{ Síncrona: aguarda terminar a reprodução para continuar: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav', SND_SYNC);
{ Assíncrona: a execução continua normalmente enquanto
ocorre a reprodução: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav', SND_ASYNC);
{ Contínua: a reprodução é repetida num efeito de loop.
Este tipo de reprodução precisa ser assíncrona: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav',
SND_ASYNC or SND_LOOP);
{ Interrompe uma reprodução contínua: }
SndPlaySound(nil, 0);
Observações A reprodução contínua pode ser usada, por exemplo, para altertar o usuário em uma situação extremamente crítica. Se o equipamento não possuir placa de som, o arquivo não será reproduzido. Autor: Daniel P. Guimarães Usar eventos de som do Windows
{ Evento Som Padrão }
MessageBeep(0); { ou Beep; }
{ Evento Parada Crítica }
MessageBeep(16);
{ Evento Pergunta }
MessageBeep(32);
{ Evento Exclamação }
MessageBeep(48);
{ Evento Asterisco }
MessageBeep(64);Autor: Daniel P. Guimarães Reproduzir um arquivo WAVInclua na seção uses: MMSystem
PlaySound('C:\ArqSom.wav', 1, SND_ASYNC);
Observações Troque o nome do arquivo (C:\ArqSom.wav) pelo arquivo desejado. Autor: Daniel P. Guimarães Reproduzir um vídeo AVI em um Form
{ - Crie um novo projeto. Este já deverá ter o Form1;
- Adicione um novo Form (Form2);
- Coloque, no Form1, um TMediaPlayer (paleta System)
e um botão;
- Altere o evento OnClick do botão como abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
begin
with MediaPlayer1 do begin
FileName := 'c:\speedis.avi';
Open;
{ Ajusta tamanho do Form }
with MediaPlayer1.DisplayRect do begin
Form2.ClientHeight := Bottom - Top;
Form2.ClientWidth := Right - Left;
end;
Display := Form2;
Form2.Show;
Play;
end;
end;
Observações Em vez de ajustar o Form ao vídeo, podemos ajustar o vídeo ao Form. Para isto troque o trecho with..end; por MediaPlayer1.DisplayRect := Form2.ClientRect; Autor: Daniel P. Guimarães Página atualizada em 23 de janeiro de 2012 |