在VB中实现"绿色"软件
⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”
⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加 Winsock 控件(C:/Winddows/System/Mswinsck.ocx),再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:
类型: “OCX”(也可以用默认的"CUSTOM")
标识号: 101
语言: 中文(中国)
⑶保存资源文件,写如下代码:
Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const MAX_PATH = 260 '定义足够长的字符串
Private Sub Form_Load()
Dim TempFile() As Byte
Dim FileNum As Integer
Dim TempDir As String
TempDir = GetWinSysDir '自定义函数取得系统的 Winddows/System 的目录
TempFile = LoadResData(101, "OCX") '用以从资源 (.res) 文件装载若干可能类型的数据,并返回一个 Byte 数组
FileNum = FreeFile
Open TempDir & "/Mswinsck.ocx" For Binary As #FileNum '新建文件(把 Winsock 控件复制到指定目录下)
Put #FileNum, , TempFile
Close #FileNum
'Shell "regsvr32 " & TempDir & "/Mswinsck.ocx ", vbNormalFocus '注册控件,有弹出对话框
Shell "regsvr32 " & TempDir & "/Mswinsck.ocx /s", vbNormalFocus '注册控件,无弹出对话框
End Sub
Public Function GetWinSysDir() '定义读取Winddows/System 的所在目录的函数
Dim S As String, Length As Long
S = String(MAX_PATH, 0) '赋值
Length = GetSystemDirectory(S, MAX_PATH) 'S为取得目录,MAX_PATH 为长度
S = Left(S, InStr(S, Chr(0)) - 1) '去掉多余的空格
GetWinSysDir = S
End Function
'补充:S 和 MAX_PATH 的值是可以随便赋的,
'如: Dim S As String * 20
' Length = GetSystemDirectory(S, 20)
使用这种方法,可在VB程序中嵌入任意格式的文件