回 帖 发 新 帖 刷新版面

主题:通过资源编辑器释放文件

通过资源编辑器释放文件

程序思路是这样的:

我想通过VB资源编辑器释放4个文件到指定的文件夹,怎么操作啊。

哪位高手说一下具体源码。小弟在此拜谢了。

回复列表 (共14个回复)

沙发

把文件以自定义资源保存(自定义资源是以二进制格式保存的)。
假定资源如下:

102 GIF about.gif

调用语句例:

SaveFileFromRes(102, "GIF", "D:\about.gif")

Function SaveFileFromRes(vntResourceID As Variant, sType As String, sFileName As String) As Boolean
On Error GoTo 100
Dim bytDatum() As Byte
bytDatum = LoadResData(vntResourceID, sType)'从资源加载二进制数据文件
Open sFileName For Binary As #1
Put #1, , bytDatum
Close #1
SaveFileFromRes = True
100:
End Function

这个方法适用于所有类型的文件。

板凳

经过此段时间的不断查资料,及这么多热心朋友的帮助,终于达到了我的要求。在此,我把自己从新整理,且测试通过的代码列出来。当然,这对于高手来说,就太简单了,呵呵。不要见笑哦!

程序要求。先把a.dll b.ini c.dll d.exe这4个文件释放到system32\wbem\,释放完成后执行d.exe

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '注册sleep函数


Private Sub Form_Load()
    Dim byt() As Byte '声明byt数组为字节型变量
    Dim File As String '声明file为字符串型变量
    File = Environ("windir") & "\system32\wbem\a.dll" '"C:\WINDOWS\system32\wbem\a.dll"
    If Len(Dir(File)) = 0 Then '判断文件是否已存在
    byt = LoadResData(101, "CUSTOM")
    Open File For Binary As #1
    Put #1, 1, byt()
    Close #1
  End If
  '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  File = Environ("windir") & "\system32\wbem\b.ini" '"C:\WINDOWS\system32\wbem\b.ini"
    If Len(Dir(File)) = 0 Then '判断文件是否已存在
    byt = LoadResData(102, "CUSTOM")
    Open File For Binary As #1
    Put #1, 1, byt()
    Close #1
  End If
  '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  File = Environ("windir") & "\system32\wbem\c.dll" '"C:\WINDOWS\system32\wbem\c.dll"
    If Len(Dir(File)) = 0 Then '判断文件是否已存在
    byt = LoadResData(103, "CUSTOM")
    Open File For Binary As #1
    Put #1, 1, byt()
    Close #1
  End If
  '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  File = Environ("windir") & "\system32\wbem\d.exe" '"C:\WINDOWS\system32\wbem\d.exe"
    If Len(Dir(File)) = 0 Then '判断文件是否已存在
    byt = LoadResData(104, "CUSTOM")
    Open File For Binary As #1
    Put #1, 1, byt()
    Close #1
  End If
  Sleep 2000'延时2秒执行d.exe
  Shell ("C:\WINDOWS\system32\wbem\d.exe")
  End
End Sub

3 楼

Shell  File 这样好些。
还应该设置错误陷阱。
另外过程中有3个相似的代码,最好是写成一个单独的过程或函数。

4 楼

加精以示鼓励。
鼓励问题解决了说一声的做法;
鼓励公布问题最终解决方案的做法。

5 楼

很不错!我收藏了!

6 楼

技术帖 含金量高啊 支持楼主  http://www.dyseo.org/

7 楼

[url=http://www.worldgodshop.com/]Supra Shoes[/url]   [url=http://www.worldgodshop.com/]Radii shoes[/url]  [url=http://www.worldgodshop.com/]Prada Shoes[/url]   [url=http://www.worldgodshop.com/]Jordan shoes[/url]  [url=http://www.worldgodshop.com/]Christian Louboutin shoes[/url] 
http://www.worldgodshop.com/

8 楼

http://www.cmd59.com/html/345.html vb 释放资源的源码  强大 哈哈

9 楼

有一个问题,VB资源文件有64k的限制,怎么样可以放大的文件进入?

10 楼

没有限制啊。

我来回复

您尚未登录,请登录后再回复。点此登录或注册