预览模式: 普通 | 列表

如何制作与使用 .RES 资源文件

这是从资源文件里调用msvbvm60.dll 注册的代码
本代码是放在模块 Moudule1.bas 里面,不是放在Form1里面的.
要注册.dll .ocx最好是放在.bas里面,并把启动项设为Sub Main
否则有可能在还没进入窗体执行注册的动作前,就产生错误而中断了
尤其是98系统之下的msvbvm60.dll

Moudule1.bas代码: 

ASP/Visual Basic代码
  1. Option Explicit   
  2. Public winsys$, appdisk$, aa$, jj%   
  3. Sub Main()   
  4.     On Error Resume Next  
  5.     If App.PrevInstance Then  
  6.         MsgBox "本系统已运行中, 不得重复加载!!", vbOKOnly, App.Title   
  7.         End  
  8.     Else  
  9.         appdisk = Trim(App.Path) & "/"  
  10.         winsys = Environ("windir") & "/system32/"  
  11.         Call regdllocx   
  12.         Form1.Show   
  13.     End If  
  14. End Sub  
  15.   
  16.   
  17. Private Sub regdllocx()   
  18.     On Error Resume Next  
  19.     Dim v   
  20.     Dim byt() As Byte  
  21.     aa = winsys & "msvbvm60.dll"  
  22.     If Dir(aa) = "" Then  
  23.         v = LoadResData(101, "CUSTOM")   
  24.         byt = v   
  25.         Open aa For Binary As #1   
  26.         Put #1, 1, byt()   
  27.         Close #1   
  28.     End If  
  29.     If Dir(aa) <> "" Then  
  30.         aa = winsys & "Regsvr32 /s " & aa   
  31.         Call Shell(aa, 3)   
  32.     End If  
  33. End Sub  


Form1.frm代码:

 

ASP/Visual Basic代码
  1. '直接从资源文件调用 .bmp图片(只允许.bmp),不必释放到硬盘    
  2. 'Me.Icon = LoadResPicture(101, vbResIcon) '注释:加载图标    
  3. 'Picture1.Picture = LoadResPicture(101, vbResBitmap) '注释:加载位图    
  4. 'Command1.MouseIcon = LoadResPicture(101, vbResCursor) '注释:加载光标'    
  5.   
  6. '播放 WAVE 声音(只允许.wav)    
  7.   
  8. Option Explicit   
  9. Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As LongAs Long  
  10. Const SND_ASYNC = &H1   
  11. Const SND_MEMORY = &H4   
  12. Private Sub Command1_Click()   
  13.     Dim bArr() As Byte  
  14.     bArr = LoadResData(101, "CUSTOM")   
  15.     DoEvents   
  16.     sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY   
  17. End Sub  
  • 1