如何通过SndPlaySound启动音乐

时间:2012-10-29 14:28:39

标签: delphi delphi-7 playback

在此Website我找到了如何将音乐添加到.res文件中,然后在delphi .exe中使用它。这是启动WAVE歌曲的代码。

procedure TForm2.FormActivate(Sender: TObject);
var
   hFind, hRes: THandle;
   Song: PChar;
 begin
  hFind := FindResource(HInstance, 'SonicSong', 'WAVE') ;
  if hFind <> 0 then begin
    hRes:=LoadResource(HInstance, hFind) ;
    if hRes <> 0 then begin
      Song:=LockResource(hRes) ;
      if Assigned(Song) then SndPlaySound(Song, snd_ASync or snd_Memory) ;
      UnlockResource(hRes) ;
    end;
    FreeResource(hFind) ;
  end;
end;

所以我想知道的是如何在不关闭应用程序的情况下停止播放音乐?

3 个答案:

答案 0 :(得分:6)

调用sndPlaySound函数,并将第一个参数设置为nil,这会导致当前播放的声音停止。由于第二个参数使用SND_ASYNC标志,因为正如参考所示,您必须使用此标志来终止您在代码中播放的异步播放的波形声音:

sndPlaySound(nil, SND_ASYNC);

答案 1 :(得分:2)

您可以使用SND_RESOURCE而非PlaySound()的{​​{1}}功能简化代码:

sndPlaySound()

答案 2 :(得分:0)

测试:

PlaySound(nil, 0, 0);