如何在DELPHI程序中加入背景音乐,MP3的音乐或是FLASH音乐。程序执行时就可以听到给定的MP3音乐,可执行的EXE文件中含有MP3音乐。就像在DELPHI中用图片那样,给别人时,只看到一个EXE文件,打开才可以看到图片,听到音乐。

解决方案 »

  1.   

    首先你应该编写资源文件,
    建立一个扩展名为rc的文件,比如为BackMusic.rc, 在其中写入:
    BackMusic WAV SOUND.WAV 
    其中Sound.Wav为一个声音文件
    然后在命令行中输入:brcc32 BackMusic.rc
    它会生成一个BackMusic.RES文件然后在程序中写uses ShallApi;implementation
    {$R *.DFM} 
    {$R BackMusic.RES} function ExtractRes(ResType, ResName, ResNewName: string): boolean;
    var
      Res: TResourceStream;
    begin
      try
        Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
        try
          Res.SavetoFile(ResNewName);
          Result := true;
        finally
          Res.Free;
        end;
      except
        Result := false;
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      FileName: string;
    begin
      FileName:=Format('%sBackMusic',[ExtractFilePath(Application.ExeName)]);
      ExtractRes('WAV', 'BackMusic', FileName);
      sndPlaySound(FileName,snd_async or snd_Memory);
    end;
      

  2.   

    放在资源文件中新建一文本文档,
    内容是 SOUND1 WAV SOUND.WAV
    保存为
    nestexe.rc
    然后用brcc32将他编译成res文件unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MMSystem;type
      TForm1 = class(TForm)
        btnStart: TButton;
        procedure btnStartClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
        PtrSound : PChar;
        hRes : THandle; {handle to the loaded resource
        if 0 indicates nothing playing}
    implementation{$R *.dfm}
    {$R nestexe.res}procedure TForm1.btnStartClick(Sender: TObject);
    begin
      sndplaysound(ptrSound,snd_async or snd_Memory);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      hResInfo : THandle;
    begin 
      hResInfo := FindResource(HInstance, 'SOUND1', 'WAV');
      hRes := LoadResource(HInstance, hResInfo);
      if hRes > 32 then {its a good load}
      begin {lock the resource}
        ptrSound:=LockResource(hRes);
      end;
    end;end.
      

  3.   

    这句应为
    FileName:=Format('%sBackMusic.wav',[ExtractFilePath(Application.ExeName)]);其它的资源是相同的道理BackMusic WAV SOUND.WAV 
    资源名称  资源类型  原文件名资源类型好像可以随便写,只要释放的时候给出正确的扩展名就可以了
      

  4.   

    調用外部命令就可以了(*.wav 音源文件).......
    uses mmsystem;
    playsound(.....);如果是Flashr的swf格式 好像可以直接播放出聲音來。。