在此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;


因此,我想知道的是如何在不关闭应用程序的情况下停止音乐?

最佳答案

在第一个参数设置为sndPlaySound的情况下调用nil函数,这会导致当前播放的声音停止。作为第二个参数,请使用SND_ASYNC标志,因为如参考文献所述,您必须使用此标志来终止异步播放的波形声音,该声音在代码中正在播放:

sndPlaySound(nil, SND_ASYNC);

10-04 17:34