很喜欢那种只有单个文件且免安装的程序,因此希望把像wav等资源编进exe文件里,但是在vb中却不能直接调用wav声音资源。如何是好!?

解决方案 »

  1.   

    需要特殊的api函数
    如:
    Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long调用方式:
        Public Const SND_FILENAME = &H20000     '  name is a file name
        Public Const SND_ASYNC = &H1         '  play asynchronously    Dim szFileName As String
        szFileName = App.Path & "\test.wav" 
        PlaySound szFileName, 0, SND_FILENAME + SND_ASYNC
      

  2.   

    http://expert.csdn.net/Expert/topic/2521/2521292.xml?temp=.842724
      

  3.   

    用资源管理器把.wav文件放到自定义资源中,然后在程序中用LoadResData(index,"CUSTOM")进行调用即可,index为资源号
      

  4.   

    是可以直接播放的。
    大约代码是
    dim bWave() as byte
    bWave=loadresdata("id","type")
    sndplaysound bwave(0),snd_async or snd_nodefault or snd_memory
    上面的代码是直接写的,没有经过测试,因此不保证可行,但是要说的是资源里面的文件wave 是可以直接播放的。
    还要注意一点的是在声明api的时间把byval filename as string这个参数改为 filename as any,这样才可以工作。