-2

我正在使用delphi7。我想在我的程序中放一首歌,但我不希望它永远结束。我尝试使用计时器,但它没有播放音乐:

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.enabled:=true;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var playsound,destination:string;
begin

destination:=paramstr(0); 
playsound:=extractfilepath(destination)+'Soundtrack\play.wma';

mediaplayer1.FileName:=playsound;                
mediaplayer1.Open;
mediaplayer1.Play;                        //USING TMEDIAPLAYER

end;

这段代码没有语法错误,但是歌曲没有运行,也许计时器不适合那个工作。我该怎么做?谢谢

4

2 回答 2

5

TMediaPlayer一个控件,所以你自然不应该使用它,除非你想要它的 GUI。

如果您只想重复播放音频文件,请使用以下PlaySound功能MMSystem.pas

PlaySound('test.wav', 0, SND_FILENAME or SND_NODEFAULT or SND_ASYNC or SND_LOOP)
于 2013-05-05T19:40:51.313 回答
3

不要为此使用计时器。改用TMediaPlayer.OnNotify事件:

procedure TForm1.FormCreate(Sender: TObject);
begin
  mediaplayer1.FileName := extractfilepath(paramstr(0))+'Soundtrack\play.wma';
  mediaplayer1.Notify := true;
  mediaplayer1.Wait := false;          
  mediaplayer1.Open;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  case mediaplayer1.Mode of
    mpOpen, mpStopped: begin
      if mediaplayer1.Error = 0 then begin
        mediaplayer1.Notify := true;
        mediaplayer1.Wait := false;
        mediaplayer1.Play;
      end;
    end;
  end;
end;
于 2013-05-06T04:28:39.543 回答