Reproduzir som

20/08/2004

Como faço para reproduzir um som infinitamente e deixar o usuário executar tarefas, ou seja, o que quero é o programa rodando normalmente e o Delphi executando também um música de fundo. O comando SndPlaySound(´c:\som.wav´, snd_ASync and snd_Loop) faz o que preciso, mas a aplicação fica bloqueada para o usuário até que se dê o comando para parar a música. Podems me ajudar? Obrigado.


Valdirdill

Respostas

20/08/2004

Sandra

valdirdill,

Já testou o MediaPlayer da aba System?


Responder Citar

20/08/2004

Valdirdill

Não. O que é um componente?

valdirdill, Já testou o MediaPlayer da aba System?



Responder Citar

20/08/2004

Tatuweb

Sim é um componente. Basta adicioná-lo e configurar conforme a baixo para tocar uma música.

MediaPlayer .Filename := ´C:\Pasta\arquivo.wav´;
MediaPlayer1.Open;
MediaPlayer1.Play;


Usar o MediaPlayer é bem simples e mais prático. Como alternativa você pode, se não tiver dificuldade, usar a função SndPlaySound em um Thread. Para isso basta dar uma olha nesse tópico:
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=42483&start=15


Responder Citar

20/08/2004

Valdirdill

Desculpe a pergunta anterior. Eu estava meio fora do ar. Claro que é um componente. E nativo.
Certo, seria uma opção, mas quando a música acaba, o som pára. O que eu queira é que quando a música terminasse a reprodução recomeçasse. Entendeu? Há como fazer isso com esse componente?
Obrigado


Sim é um componente. Basta adicioná-lo e configurar conforme a baixo para tocar uma música.
MediaPlayer .Filename := ´C:\Pasta\arquivo.wav´;
MediaPlayer1.Open;
MediaPlayer1.Play;
Usar o MediaPlayer é bem simples e mais prático. Como alternativa você pode, se não tiver dificuldade, usar a função SndPlaySound em um Thread. Para isso basta dar uma olha nesse tópico: :arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=42483&start=15



Responder Citar

20/08/2004

Tatuweb

Ai vc faz o seguinte. Primeiro declare uma variável global:

var
  Form1: TForm1;
  LoopMP: Boolean; // Controla a reprodução do som

No OnShow do Form vc coloca:

procedure TForm1.FormShow(Sender: TObject);
begin
  LoopMP := FALSE;
  MediaPlayer1.Filename := ´C:\Windows\Media\Chimes.wav´;
  MediaPlayer1.Open;
end;

No evento Notify do MediaPlayer vc coloca:

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if LoopMP then MediaPlayer1.Play;
end;

A hora que vc quiser reproduzir/parar o som vc chama a linha abaixo:

  LoopMP := not LoopMP;
  MediaPlayer1.OnNotify (Self);



Responder Citar

20/08/2004

Valdirdill

Valeu. Funcionou beleza mesmo. Obrigadíssimo.

Ai vc faz o seguinte. Primeiro declare uma variável global:
var
  Form1: TForm1;
  LoopMP: Boolean; // Controla a reprodução do som
No OnShow do Form vc coloca:
procedure TForm1.FormShow(Sender: TObject);
begin
  LoopMP := FALSE;
  MediaPlayer1.Filename := ´C:\Windows\Media\Chimes.wav´;
  MediaPlayer1.Open;
end;
No evento Notify do MediaPlayer vc coloca:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if LoopMP then MediaPlayer1.Play;
end;
A hora que vc quiser reproduzir/parar o som vc chama a linha abaixo:
  LoopMP := not LoopMP;
  MediaPlayer1.OnNotify (Self);



Responder Citar