如何播放做到EXE文件中的WAV资源??(50分)

2

2benben

Unregistered / Unconfirmed
GUEST, unregistred user!
将WAV文件做到EXE文件中后,如何播放声音资源??[?]
 
procedure TForm1.LoadWaveClick(Sender: TObject);

begin

PlaySound('MyWav', HInstance, Snd_ASync or Snd_Memory or snd_Resource) ;

end;


 
参考以下方法:

19. 放置任意的文件到Delphi的EXE文件里面
通常在Delphi的应用程序中,我们会调用到很多的资源,例如图片,动画(AVI),声音,甚至于别的执行文件。当然,把这些资源分布到不同的目录不失为一个好办法,但是有没有可能把这些资源编译成标准的windows资源从而链接到一个执行文件里面呢?
我们可以自己做一个RC文件,例如 sample.rc ,RC文件其实就是一个资源文件的描述文本,通过“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,例如:

MEN BITMAP c:/bitmap/men.bitmap
ARJ EXEFILE c:/arj.exe
MOV AVI c:/mov.avi

然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。
在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面。

{$R sample.res}

这样我们就可以在这个单一的执行文件中调用资源了。举例如下:

EXEFILE:
procedure ExtractRes(ResType, ResName, ResNewName : String);

var
Res : TResourceStream;

begin

Res := TResourceStream.Create(Hinstance, Resname, char(ResType));

Res.SavetoFile(ResNewName);

Res.Free;

end;



AVI:
procedure LoadAVI;

begin

{Avi1是一个TAnimate类}
Avi1.ResName:='AVI';
//设置一下资源就可以
Avi1.Active:=True;
//用TAnimate 进行播放
end;



 
Thank you!!![:)]
 
用记事本编例如sample.rc sound1 wave sound.wav然后用BRCC32把这个RC文件编译成sample.res. 在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面
uses mmsystem;
playsound('sound1',hinstance,snd_async or snd memory);
 
顶部