如何反复播放一个声音文件直到窗口关闭?

解决方案 »

  1.   

    BOOL PlaySound(
        LPCSTR pszSound,
        HMODULE hmod,
        DWORD fdwSound
       );hmod=SND_LOOP
    The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. You must also specify the SND_ASYNC flag to indicate an asynchronous sound event.
      

  2.   

    用MediaPlayer控件吧:procedure TForm2.FormShow(Sender: TObject);
    begin
      MediaPlayer1.Close; //关闭媒本播放器
      MediaPlayer1.AutoRewind := True; //自动循环!!!!
      MediaPlayer1.FileName := '你的文件名';
      MediaPlayer1.Open; //打开媒本播放器
      MediaPlayer1.Play; //开始播放
    end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      MediaPlayer1.Close; //关闭媒本播放器
    end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, MPlayer, StdCtrls;type
      TForm1 = class(TForm)
        MediaPlayer1: TMediaPlayer;
        procedure FormShow(Sender: TObject);
         procedure  FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
    begin
      MediaPlayer1.Close; //关闭媒本播放器
      MediaPlayer1.AutoRewind := True; //自动循环!!!!
      MediaPlayer1.FileName :='1.wav';
      MediaPlayer1.Open; //打开媒本播放器
      MediaPlayer1.Play; //开始播放
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      MediaPlayer1.Close; //关闭媒本播放器
    end;
    end.
    放不了
      

  4.   

    unit Unit1; interface uses 
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
      Dialogs, MPlayer, StdCtrls; type 
      TForm1 = class(TForm) 
        MediaPlayer1: TMediaPlayer; 
        procedure FormShow(Sender: TObject); 
         procedure  FormClose(Sender: TObject; var Action: TCloseAction); 
      private 
        { Private declarations } 
      public 
        { Public declarations } 
      end; var 
      Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); 
    begin 
      MediaPlayer1.Close; //关闭媒本播放器 
      MediaPlayer1.AutoRewind := True; //自动循环!!!! 
      MediaPlayer1.FileName :='1.wav'; 
      MediaPlayer1.Open; //打开媒本播放器 
      MediaPlayer1.Play; //开始播放 
    end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
    begin 
      MediaPlayer1.Close; //关闭媒本播放器 
    end; 
    end. 
    点击播放才放,
    不是自动播放,也没有循环播放
      

  5.   

    看不懂。
    procedure TForm1.Button1Click(Sender: TObject);
    begin      sndPlaySound('C:\WINDOWS\MEDIA\Chimes.wav',   SND_ASYNC);
    end;
      

  6.   

    MediaPlayer1.FileName :='1.wav'; //这里要给出完整的路径吧
      

  7.   

    自动播放了,但没有循环播放
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, MPlayer, StdCtrls;type
      TForm1 = class(TForm)
        MediaPlayer1: TMediaPlayer;
      procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
       MediaPlayer1.Close; //关闭媒本播放器
      MediaPlayer1.AutoRewind := True; //自动循环!!!!
     MediaPlayer1.FileName :='E:\for-Sound2\1.wav';
      MediaPlayer1.Open; //打开媒本播放器
      MediaPlayer1.Play; //开始播放
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       MediaPlayer1.Close; //关闭媒本播放器
    end;end.
      

  8.   


    这个可以循环播放 
    procedure TForm1.FormCreate(Sender: TObject);
    begin   sndPlaySound('C:\WINDOWS\MEDIA\Chimes.wav',SND_ASYNC or SND_LOOP);
    end;
      

  9.   


    这个为什么不能循环procedure TForm1.FormCreate(Sender: TObject); 
    begin 
       MediaPlayer1.Close; //关闭媒本播放器 
      MediaPlayer1.AutoRewind := True; //自动循环!!!! 
     MediaPlayer1.FileName :='E:\for-Sound2\1.wav'; 
      MediaPlayer1.Open; //打开媒本播放器 
      MediaPlayer1.Play; //开始播放 
    end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
    begin 
       MediaPlayer1.Close; //关闭媒本播放器 
    end; 
      

  10.   

    是不行,你加一个Timer吧,时间间隔设短一点
    procedure TForm1.FormShow(Sender: TObject);
    begin
      Timer1.Interval := 100;  MediaPlayer1.Close; //关闭媒本播放器
      MediaPlayer1.FileName :='F:\Music\从头再来.mp3';
      MediaPlayer1.Open; //打开媒本播放器
      MediaPlayer1.Play; //开始播放
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if (MediaPlayer1.Mode = mpStopped) and (MediaPlayer1.Length = MediaPlayer1.Position) then
      begin
        MediaPlayer1.Position := 0;//如果放完了再从头放
        MediaPlayer1.Play;
      end;
    end;
    小声说,你的问题真不太好回答的