3

在这个网站上,我发现了如何将音乐添加到 .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;

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

4

3 回答 3

7

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

sndPlaySound(nil, SND_ASYNC);
于 2012-10-29T14:33:31.263 回答
2

您可以通过使用SND_RESOURCE功能来简化您的代码,PlaySound()而不是sndPlaySound()

procedure TForm2.FormActivate(Sender: TObject);
begin
  PlaySound('SonicSong', HInstance, SND_AYNC or SND_RESOURCE);
end;

procedure TForm2.FormDeactivate(Sender: TObject);
begin
  PlaySound(nil, HInstance, SND_AYNC or SND_RESOURCE);
end;
于 2012-10-29T23:09:01.667 回答
0

测试:

PlaySound(nil, 0, 0);
于 2016-03-26T23:22:27.390 回答