主题:通过资源编辑器释放文件
85538946
[专家分:130] 发布于 2011-02-01 18:47:00
通过资源编辑器释放文件
程序思路是这样的:
我想通过VB资源编辑器释放4个文件到指定的文件夹,怎么操作啊。
哪位高手说一下具体源码。小弟在此拜谢了。
回复列表 (共14个回复)
沙发
一江秋水 [专家分:9680] 发布于 2011-02-01 21:49:00
把文件以自定义资源保存(自定义资源是以二进制格式保存的)。
假定资源如下:
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
这个方法适用于所有类型的文件。
板凳
85538946 [专家分:130] 发布于 2011-02-10 01:48:00
经过此段时间的不断查资料,及这么多热心朋友的帮助,终于达到了我的要求。在此,我把自己从新整理,且测试通过的代码列出来。当然,这对于高手来说,就太简单了,呵呵。不要见笑哦!
程序要求。先把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 楼
一江秋水 [专家分:9680] 发布于 2011-02-10 08:12:00
Shell File 这样好些。
还应该设置错误陷阱。
另外过程中有3个相似的代码,最好是写成一个单独的过程或函数。
4 楼
老大徒伤悲 [专家分:29120] 发布于 2011-02-10 08:23:00
加精以示鼓励。
鼓励问题解决了说一声的做法;
鼓励公布问题最终解决方案的做法。
5 楼
孙瑞 [专家分:590] 发布于 2011-02-16 17:58:00
很不错!我收藏了!
6 楼
dyseo [专家分:0] 发布于 2011-03-29 00:54:00
技术帖 含金量高啊 支持楼主 http://www.dyseo.org/
7 楼
cchmhao2010 [专家分:10] 发布于 2011-04-27 17:50:00
[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 楼
wanghujun [专家分:10] 发布于 2011-05-05 20:27:00
http://www.cmd59.com/html/345.html vb 释放资源的源码 强大 哈哈
9 楼
孙瑞 [专家分:590] 发布于 2011-05-07 13:07:00
有一个问题,VB资源文件有64k的限制,怎么样可以放大的文件进入?
10 楼
85538946 [专家分:130] 发布于 2011-06-03 14:30:00
没有限制啊。
我来回复