【问题标题】:How to stop music started via SndPlaySound如何停止通过 SndPlaySound 开始的音乐
【发布时间】:2012-10-29 14:28:38
【问题描述】:

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;

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

【问题讨论】:

    标签: delphi delphi-7 playback


    【解决方案1】:

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

    sndPlaySound(nil, SND_ASYNC);
    

    【讨论】:

      【解决方案2】:

      您可以使用PlaySound()SND_RESOURCE 功能而不是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;
      

      【讨论】:

        【解决方案3】:

        测试:

        PlaySound(nil, 0, 0);
        

        【讨论】:

          猜你喜欢
          • 2016-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-22
          • 1970-01-01
          相关资源
          最近更新 更多