如何在Delphi 7中播放音乐?

4
我需要在程序启动时,在OnFormActivate事件中播放背景音乐。我已经有了想要使用的歌曲,但我不知道Delphi需要使用什么命令来开始播放该歌曲。
谢谢你们的帮助 :)

1
可能是如何在Delphi中播放wav文件?的重复问题。你实际上不需要MediaPlayerComponent,也可以使用MMSystem单元,请参见链接。 - Johan
@Johan 这对于 wmamp3 也适用吗? - NGLN
我使用了TMediaPlayer,它可以工作,但是在歌曲长度结束后,它不会重复播放歌曲。我该如何让歌曲重复播放? - Nyt Ryda
@NGLN,令人恼火的是,有时它可以工作,有时却不行。在我的旧笔记本电脑WinXP-xp3上,它可以使用MP3文件,但在我预先复制的Win XP sp1的虚拟机上却无法使用。 - Johan
2个回答

6
使用TMediaPlayer组件,它在组件面板的System选项卡中。
procedure TForm1.FormActivate(Sender: TObject);
begin
  MediaPlayer1.FileName := '<fill in>.mp3';
  MediaPlayer1.Open;
  MediaPlayer1.Play;
end;

Visible属性设置为False。

根据OP的评论进行编辑:

要重复播放歌曲,您可以使用TTimer组件,该组件也位于“系统”选项卡中。要延迟一秒钟重复播放歌曲:

procedure TForm1.FormActivate(Sender: TObject);
begin
  MediaPlayer1.FileName := '<fill in>.mp3';
  MediaPlayer1.Open;
  MediaPlayer1.TimeFormat := tfMilliseconds;
  Timer1.Interval := MediaPlayer1.Length + 1000;
  MediaPlayer1.Play;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  MediaPlayer1.Play;
end;

将计时器的“Enabled”属性设置为False。

一些在欧洲发行的Windows版本(N 版本)没有预装MediaPlayer。因此,您必须在安装脚本中将其列为要求。 - Fabricio Araujo
2
在音频播放时,您不需要运行计时器。在调用Play()之前将TMediaPlayer.Notify属性设置为true,然后使用OnNotify事件检测播放停止的时间。然后启动1秒的计时器,在其到期时调用Play() - Remy Lebeau

2

您可以使用TMediaPlayerComponent
这里有一个关于如何使用它的教程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接