3

このWeb サイトで、音楽を .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と、現在再生中のサウンドが停止します。2番目のパラメーターとして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 に答える