我自己编了道小程序,在程序执行时会自动播放乐曲,我想把这程序发给我朋友,但只想发一个EXE文件,而不想同时连那一堆乐曲文件一起发过去,有没什么办法能将这些乐曲文件全包含到EXE文件中,这样只要有这个EXE文件,拿到任何一台机子上都能正常运行。

解决方案 »

  1.   

    添加资源文件
    调用声音
        Dim bArr() As Byte
        bArr = LoadResData("101", "WAVE")
        sndPlaySound bArr(0), SND_MEMORY Or SND_ASYNC资源文件添加方法.
    打开资源编辑器, 生成res 文件 在VB6.0中,已经有了资源编辑器,选择菜单Add Ins(外接程序)->Add In Manager...(外接程序管理器)->看到列表框中的"VB 6 Resouce Editor(VB6资源编辑器)",双击该选项,加载后出现在VB的工具菜单中。 调用文字串
        Text1.Text = LoadResString(8001)
        Text2.Text = LoadResString(8002)
    调用文本文件
        Dim bArr() As Byte, S As String
        bArr = LoadResData("nettxt", "TextFile")
        S = StrConv(bArr, vbUnicode)
        Text2.Text = S调用声音
        Dim bArr() As Byte
        bArr = LoadResData("japan", "WAVE")
        sndPlaySound bArr(0), SND_MEMORY Or SND_ASYNC
    调用图标图形等
        Picture1.MousePointer = 99
        Set Picture1.Picture = LoadResPicture("bmp1", vbResBitmap)
        Set Me.Icon = LoadResPicture("ico1", vbResIcon)
        Set Picture1.MouseIcon = LoadResPicture("cur1", vbResCursor)
    调用自定义文件
    Private Const OCXSIZE = 306448 '欲生成的控件大小是57344Byte,名字为CoolToolBar.ocx
     Dim Ocx() As Byte 'OCX是个Btye类型的数组
     Dim Counter As Long
     Ocx = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组OCX
     
      
          Open App.Path & "CoolToolBar.ocx" For Binary As #1 
        For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
        Put #1, , Ocx(Counter)
       Next Counter
       Close #1
      
    ********调用方法
    在程序中调用资源文件与直接调用资源在方法上差别不大。首先要保证已经加入资源文件,一个工程只能添加一个资源文件,如果未加入资源文件,可以在“工程”中的“Add New Resource File”添加。调用资源的函数有    
      LoadResString     返回一个文本字符串。
      LoadResPicture    返回一个 Picture 对象,例如位图、图标或光标。
      LoadResData      返回一个 Byte 数组,用于象 .wav 之类的文件。
      其语法为 LoadResString(index)index是必需的一个整数,它用来指定资源文件中数据的标识符(即前面所说的ID)。Id标识符为 1 的资源保留给应用程序图标
      LoadResPicture(index, format) index含义与上相同,format是必需的一个数值或常数,用来指定返回数据的格式。其设置如下: 
      常数         设置    描述
      vbResBitmap    0    位图资源
        vbResIcon        1    图标资源
      vbResCursor    2    光标资源      LoadResData(index, format) 其参数含义与LoadResPicture相同,其中用于 format 的设置有:
      设置    描述
        1    光标资源 
          2    位图资源
        3    图标资源 
          4    菜单资源
        5    对话框  
            6    字符串资源
        7    字体目录资源 
          8    字体资源
        9    加速器表 
        10    用户定义资源
      12    群组光标 
        14    群组图标
      可见,通过资源文件调用资源与一般调用资源的方法除了参数稍有点不同以外,其余的用法都是一致的。如将窗体图标设置为资源文件中的图形:
    Set Me.Icon=LoadResPicture("icon1",vbResIcon)
      

  2.   

    补充新建模块
       Option Explicit
        Public Const SND_ASYNC = &H1&
        Public Const SND_LOOP = &H8&
        Public Const SND_MEMORY = &H4&
        Public Const SND_NODEFAULT = &H2&
        Public Const SND_NOSTOP = &H10&
        Public Const SND_SYNC = &H0&
        Declare Function sndPlaySound Lib "winmm.dll" Alias       "sndPlaySoundA" (lpszSoundName   As Any, ByVal uFlags As Long) As Long
      

  3.   

    我的音乐文件为MID,大小为100K,资源文件好象不能超过64K
      

  4.   

    //For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
        Put #1, , Ocx(Counter)麻烦!直接Put #1,,Ocx就可以了//我的音乐文件为MID,大小为100K,资源文件好象不能超过64K拆成两个文件啦~~用二进制编辑程序拆。用的时候合并
      

  5.   

    http://dev.csdn.net/develop/article/23/23062.shtm
      

  6.   

    资源文件都是在程序设计时编辑好的,能不能进行动态加载啊?
    我见过一个软件,只要自己选定一副照片,再选定一首乐曲,该软件就能自动生成一张EXE文件的贺卡,照片和乐曲都在EXE文件里面.