注册 登录
编程论坛 VB6论坛

VB6.0该如何释放内部资源?

小刀神 发布于 2018-09-06 16:43, 3448 次点击
VB6.0该如何释放内部资源?比如,自己写一个安装包,需要的一些资源文件,装入到程序中,当用户安装的时候,需要释放这些资源,该怎么做?听说可以用OLE控件,但还是不清楚该怎么做。
5 回复
#2
紫苑星苑2018-09-09 17:18
用VB自带的资源编辑器就可以了
使用资源编辑器导入资源后
再使用字节型变量+LoadResData抽取数据
随后使用正常的写出语句就可以导出文件了
程序代码:
Dim tep() As Byte
    '抽取资源文件
    tep = LoadResData(1, "EXE")
    '输出资源文件
    Open (pathi & "\game.exe") For Binary As #1    'pathi=安装目录
        Put #1, , tep
    Close #1

关于资源编辑器的添加方法及使用:
外接程序→外接程序管理器
只有本站会员才能查看附件,请 登录

然后选定勾选这两个后工具栏会出现对应图标
只有本站会员才能查看附件,请 登录

一般都是添加自定义资源
只有本站会员才能查看附件,请 登录
#3
小刀神2018-09-09 18:42
回复 2楼 紫苑星苑
怎么新建EXE文件夹的?
#4
小刀神2018-09-09 18:44
回复 2楼 紫苑星苑
顺便问下,360误报的问题该如何解决?
#5
紫苑星苑2018-09-13 18:39
回复 3楼 小刀神
EXE文件夹创建的方法:
手动添加一个自定义文件后右键它并单击[属性]
只有本站会员才能查看附件,请 登录

然后将[类型]改为EXE就行了
只有本站会员才能查看附件,请 登录


至于360误报的问题这个和360检测木马的机制有关,而VB6又是经常被用来做木马的(因为比较容易制作),所以这个没法解决
#6
WSZXD2020-01-05 17:23
回复 2楼 紫苑星苑
给看看 给个多文件的源码 谢谢

Public Function ExtractFile(ResIndex As Integer, ResType As String)
 
    Dim TempFile() As Byte

    Dim FileHandle As Integer '定义文件句柄
   FileHandle = FreeFile '初始化文件句柄

    TempFile = LoadResData(ResIndex, ResType) '装载资源文件
   Open App.Path & "\q1.exe" For Binary Access Write As #FileHandle  '以二进制方式操作文件
   Put #FileHandle, , TempFile '写入文件
   Close #FileHandle '关闭文件句柄
End Function



Private Sub cmdRes_Click()
Dim n As Integer
n = 0
n = ExtractFile(101, "CUSTOM") '
Shell App.Path & "\q1.exe", vbNormalFocus

If (n <> 0) Then
   MsgBox "释放文件失败"
End If

End Sub

Private Sub Timer1_Timer()
On Error Resume Next
Kill "q1.exe"
End Sub

只有本站会员才能查看附件,请 登录
1