使用VB6操作WinRAR(VB6源代码)
- 格式:docx
- 大小:36.51 KB
- 文档页数:10
VB解压缩带密码RAR文件的两者方法在一些批处理任务的应用程序如安装程序中,需要对压缩文件进行解压缩处理。
VB来实现对压缩文件格式,如RAR、Zip等文件的解压缩,总的来说,有以下两种方法:一、采用winrar命令行一般来说,安装好winrar后,在安装目录中,有个名为rar.txt的文件。
其实该文件就是Winrar的控制台(命令行)中文手册。
下面我们一起来学习一下,和解压缩文件有关的命令行。
Winrar命令行的通用格式是:RAR <命令> [ -<开关> ] <压缩文件> [ <@列表文件...> ][ <文件...> ] [ <解压路径\> ]举例来说,<命令>为a时,表示添加文件到压缩文件中,其中需压缩的文件由列表文件指定。
当<命令>为e的时候,就表示解压文件到当前目录。
如果需要将压缩文件解压缩到自定义目录,则通常使用x命令,该命令表示带绝对路径进行解压缩。
-<开关>为-y,表示对于所有询问全部回答是。
如果rar文件包含密码,则需要添加开关为"-p密码字符串",否则不能正常解压缩。
如果要判断是否winrar命令行是否执行成功,可以通过该命令行的返回值来判断。
如果返回值为0,则成功执行。
如果不为0,则执行过程中出现错误。
错误代码rar.txt中有详细定义。
请仔细研读该文件。
在有了上述理论作为基础之后,接下来,我们用VB来实现创建和解压缩一个带密码的压缩文件。
打开VB6,新建一个标准的Exe工程文件,界面设计如下图所示,控件的名称采用默认的名称。
图解压缩界面程序首先要获得Winrar的安装路径,一般来说,安装好了Winrar后,会在注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentV ersion\App Paths\创建一个winrar.exe的路径,该路径下有一个名为Path的字符串项,该项的值保存的就是Winrar的安装路径。
VB6编程步骤题目要求1.新建工程,在工程中新建2个窗体和1个模块,窗体命名为frmMain和frmConfig,添加Excel操作专用模块。
2.执行菜单命令“工具-选项-编辑器格式”,设置标准文本的字体格式为自己喜欢的格式,执行菜单命令“工具-选项-编辑器”,“要求变量声明”前打勾3.设置工程1的属性,修改启动对象为Sub Main,在module1中添加Sub Main过程,并输入代码:frmMain.Show vbModal。
在frmMain上添加一个退出按钮,设置其合适的大小和字体,双击该按钮,输入“Unload Me”。
4.在frmMain窗体上放置“参数设定”按钮,修改合适的外观属性,双击该按钮,输入代码“frmConfig.showvbmodal”5.参数设定编程方法:(1)在module1模块中,定义保存参数的自定义变量Public Type mSetData ' 自定义数据类型:设置参数,用于保存到磁盘文件中TH As Single ' 温度高限TL As Single ' 温度低限RHH As Single ' 湿度高限RHL As Single ' 湿度低限End TypePublic mAlarm As mSetData ' 用自定义类型mSetData 定义设置参数变量mAlarmPublic sAppPath As String ' 字符串,存放应用程序所在的路径(2)在module1模块中创建一个初始化过程Init,代码如下Sub Init()sAppPath = "E:\软件技术基础\TR" '应用程序路径Open sAppPath & "\Para.a" For Random As #1 Len = Len(mAlarm) ' 打开随机方式访问文件Get #1, 1, mAlarm ' 读取文件内容到变量中Close #1 '关闭文件End Sub在sub Main 中调用Init 过程Sub main()Init ' 初始化,读取原设置参数frmMain.Show vbModal ' 启动主窗体,有模式窗体End Sub(3)设置frmConfig窗体的界面。
VB中利用WinRAR进行文件压缩
王莉梅
【期刊名称】《网迷》
【年(卷),期】2001(000)007
【总页数】2页(P51-52)
【作者】王莉梅
【作者单位】无
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.在VB+SQL Server 2000系统中利用ADO进行各种查询的实现 [J], 李志云
2.Excel中利用VBA进行学院教务管理研究 [J], 周双恋;刘远芳;陈秀兰
3.利用Winrar进行文件压缩(解压缩)的两点改进 [J], 李伟春
4.利用VB在网刊发布中对全文电子文件进行重命名 [J], 杨海亮;付示威;林清华
5.EXCEL中的VBA在档案整理过程中的应用——利用VBA进行繁琐的文件目录生成 [J], 孙杰; 戴清清; 张春艳; 蔡梦凡; 杨帆; 张筱蓉
因版权原因,仅展示原文概要,查看原文内容请购买。
与WinRAR以最快方式压缩ZIP比较,255M的文件Level=0时用时秒大小95.1MLevel=255时用时秒大小91.6MWinRAR最快压缩ZIP 用时秒大小58.6M标准RAR压缩,我看了一下,实在太慢,也就没试了,估计要几分钟才会有结果。
从速度看,基本持平了,这个算法虽然最大压缩能力有限,但感觉设计得很巧妙,每次都基于动态表,使软件可以做得很小巧,资源占用也很少。
非常值得收藏!'测试窗体中的代码Option ExplicitPrivate WithEvents ObjZip As ClassZipPrivate BgTime As SinglePrivate Sub Command1_Click()BgTime = Timer= False= FalseWith ObjZip.InputFileName =.OutputFileName =.IsCompress = True.CompressLevel = Val.BeginProcssEnd With= Round(Timer - BgTime, 2) & "秒"= True= TrueEnd SubPrivate Sub Command2_Click()BgTime = Timer= False= FalseWith ObjZip.InputFileName =.OutputFileName =.IsCompress = False.BeginProcssEnd WithLabel1 = Round(Timer - BgTime, 2) & "秒"= True= TrueEnd SubPrivate Sub Command3_Click()= TrueEnd SubPrivate Sub Form_Load()Set ObjZip = New ClassZip= "压缩"= "解压"= "中断"End SubPrivate Sub Form_Unload(Cancel As Integer)Set ObjZip = NothingEnd SubPrivate Sub ObjZip_FileProgress(sngPercentage As Single) Label1 = Int(sngPercentage * 100) & "%"End SubPrivate Sub ObjZip_ProcssError(ErrorDescription As String) MsgBox ErrorDescriptionEnd Sub'ClassZip类中的声明与属性、方法、事件Option ExplicitPublic Event FileProgress(sngPercentage As Single)Public Event ProcssError(ErrorDescription As String) Private Type FileHeaderHeaderTag As String * 3HeaderSize As IntegerFlag As ByteFileLength As LongVersion As IntegerEnd TypePrivate mintCompressLevel As LongPrivate m_bEnableProcss As BooleanPrivate m_bCompress As BooleanPrivate m_strInputFileName As StringPrivate m_strOutputFileName As StringPrivate Const mcintWindowSize As Integer = &H1000 Private Const mcintMaxMatchLen As Integer = 18Private Const mcintMinMatchLen As Integer = 3Private Const mcintNull As Long = &H1000Private Const mcstrSignature As String = "FMZ"Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (pDest As Any, pSou rce As Any, ByVal dwLength As Long)Public Sub BeginProcss()If m_bCompress ThenCompressElseDecompressEnd IfEnd SubPrivate Function LastError(ErrNo As Integer) As StringSelect Case ErrNoCase 1LastError = "待压缩文件未设置或不存在"Case 2LastError = "待压缩文件长度太小"Case 3LastError = "待压缩文件已经过压缩"Case 4LastError = "待解压文件未设置或不存在"Case 5LastError = "待解压文件格式不对或为本软件不能认别的高版本软件所压缩"Case 254LastError = "用户取消了操作"Case 255LastError = "未知错误"End SelectEnd FunctionPublic Property Get CompressLevel() As IntegerCompressLevel = mintCompressLevel \ 16End PropertyPublic Property Let CompressLevel(ByVal intValue As Integer)mintCompressLevel = intValue * 16If mintCompressLevel < 0 Then mintCompressLevel = 0End PropertyPublic Property Get IsCompress() As BooleanIsCompress = m_bCompressEnd PropertyPublic Property Let IsCompress(ByVal bValue As Boolean)m_bCompress = bValueEnd PropertyPublic Property Let CancelProcss(ByVal bValue As Boolean)m_bEnableProcss = Not bV alueEnd PropertyPublic Property Get InputFileName() As StringInputFileName = m_strInputFileNameEnd PropertyPublic Property Get OutputFileName() As StringOutputFileName = m_strOutputFileNameEnd PropertyPublic Property Let OutputFileName(ByVal strValue As String)m_strOutputFileName = strValueEnd PropertyPublic Property Let InputFileName(ByVal strValue As String)m_strInputFileName = strValueEnd PropertyPrivate Sub Class_Terminate()m_bEnableProcss = FalseEnd SubPrivate Sub Compress()Dim lngTemp As Long, intCount As IntegerDim intBufferLocation As IntegerDim intMaxLen As IntegerDim intNext As IntegerDim intPrev As IntegerDim intMatchPos As IntegerDim intMatchLen As IntegerDim intInputFile As IntegerDim intOutputFile As IntegerDim aintWindowNext(mcintWindowSize + 1 + mcintWindowSize) As IntegerDim aintWindowPrev(mcintWindowSize + 1) As IntegerDim intByteCodeWritten As LongDim intBitCount As IntegerDim abytWindow(mcintWindowSize + mcintMaxMatchLen) As ByteDim udtFileH As FileHeaderDim strOutTmpFile As StringDim lngBytesRead As LongDim lngFileLength As LongDim lngCurWritten As LongDim lngInBufLen As Long, abytInputBuffer() As Byte, abytOutputBuffer() As Byte Dim lngOutBufLen As Long, lngInPos As Long, lngOutPos As LongDim intErrNo As IntegerOn Error GoTo PROC_ERRm_bEnableProcss = TrueIf Len(Dir(m_strInputFileName)) = 0 Or Len(m_strInputFileName) = 0 Then intErrNo = 1: GoTo PROC_ERRIf Len(m_strOutputFileName) = 0 Then m_strOutputFileName = m_strInputFileNamestrOutTmpFile = m_strOutputFileName & ".tmp"If Len(Dir(strOutTmpFile)) > 0 Then Kill strOutTmpFileIf FileLen(m_strInputFileName) < 100 Then intErrNo = 2: GoTo PROC_ERRintInputFile = FreeFileOpen m_strInputFileName For Binary Access Read As intInputFileGet intInputFile, , udtFileHSeek #intInputFile, 1If = mcstrSignature Then intErrNo = 3: GoTo PROC_ERRintOutputFile = FreeFileOpen strOutTmpFile For Binary As intOutputFileFor intCount = 0 To mcintWindowSizeaintWindowPrev(intCount) = mcintNullabytWindow(intCount) = &H20NextCopyMemory aintWindowNext(0), aintWindowPrev(0), (mcintWindowSize + 1) * 2CopyMemory aintWindowNext(mcintWindowSize + 1), aintWindowPrev(0), mcintWindowSize * 2CopyMemory abytWindow(mcintWindowSize + 1), abytWindow(0), mcintMaxMatchLen - 1intByteCodeWritten = 1lngFileLength = LOF(intInputFile)lngInBufLen = &HA000&lngOutBufLen = &HA000&If lngInBufLen > lngFileLength Then lngInBufLen = lngFileLengthReDim abytInputBuffer(lngInBufLen - 1)ReDim abytOutputBuffer(lngOutBufLen + 17)With udtFileH.HeaderSize = Len(udtFileH)lngCurWritten = .HeaderSize + 1.HeaderTag = mcstrSignature.FileLength = lngFileLength.Version =.Flag = 0End WithintMaxLen = mcintMaxMatchLenlngBytesRead = mcintMaxMatchLenlngInPos = mcintMaxMatchLenintBitCount = 1Put intOutputFile, , udtFileHGet intInputFile, , abytInputBufferCopyMemory abytWindow(0), abytInputBuffer(0), mcintMaxMatchLenCopyMemory abytWindow(mcintWindowSize), abytInputBuffer(0), mcintMaxMatchLenDo While intMaxLenintMatchPos = 0intMatchLen = 0intPrev = aintWindowNext(((&H100& * abytWindow(intBufferLocation + 1) + abytWindow(int BufferLocation)) And &HFFF) + mcintWindowSize + 1)intCount = 0Do Until intCount > mintCompressLevel Or intPrev = mcintNullintNext = 0Do While (abytWindow(intPrev + intNext) = abytWindow(intBufferLocation + intNext)) And int Next < mcintMaxMatchLenintNext = intNext + 1LoopIf intNext > intMatchLen ThenintMatchLen = intNextintMatchPos = intPrevIf intNext = mcintMaxMatchLen ThenaintWindowNext(aintWindowPrev(intPrev)) = aintWindowNext(intPrev)aintWindowPrev(aintWindowNext(intPrev)) = aintWindowPrev(intPrev)aintWindowNext(intPrev) = mcintNullaintWindowPrev(intPrev) = mcintNullExit DoEnd IfEnd IfintPrev = aintWindowNext(intPrev)intCount = intCount + 1LoopIf intBitCount And &H100 ThenlngOutPos = intByteCodeWrittenIf intByteCodeWritten > lngOutBufLen ThenPut intOutputFile, lngCurWritten, abytOutputBufferDoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERRlngCurWritten = lngCurWritten + intByteCodeWrittenlngOutPos = 0End IfintByteCodeWritten = lngOutPos + 1intBitCount = 1abytOutputBuffer(lngOutPos) = 0End IfIf intMatchLen < mcintMinMatchLen ThenintMatchLen = 1abytOutputBuffer(intByteCodeWritten) = abytWindow(intBufferLocation)abytOutputBuffer(lngOutPos) = abytOutputBuffer(lngOutPos) Or intBitCountEnd IfIf intMatchLen > 1 ThenIf intMatchLen > intMaxLen Then intMatchLen = intMaxLenabytOutputBuffer(intByteCodeWritten) = intMatchPos And &HFFintByteCodeWritten = intByteCodeWritten + 1abytOutputBuffer(intByteCodeWritten) = (((intMatchPos \ 16) And &HF0) Or intMatchLen - mci ntMinMatchLen) And &HFFEnd IfintByteCodeWritten = intByteCodeWritten + 1intBitCount = intBitCount * 2Do While intMatchLenintPrev = intBufferLocation + mcintMaxMatchLenintNext = intPrev And &HFFFIf aintWindowPrev(intNext) <> mcintNull ThenaintWindowNext(aintWindowPrev(intNext)) = aintWindowNext(intNext)aintWindowPrev(aintWindowNext(intNext)) = aintWindowPrev(intNext)aintWindowNext(intNext) = mcintNullaintWindowPrev(intNext) = mcintNullEnd IfIf lngInPos < lngInBufLen ThenabytWindow(intNext) = abytInputBuffer(lngInPos)If intPrev >= mcintWindowSize Then abytWindow(intPrev) = abytInputBuffer(lngInPos)lngBytesRead = lngBytesRead + 1lngInPos = lngInPos + 1If lngInPos >= lngInBufLen ThenIf lngFileLength > lngBytesRead ThenIf lngInBufLen > lngFileLength - lngBytesRead ThenlngInBufLen = lngFileLength - lngBytesReadReDim abytInputBuffer(lngInBufLen - 1)End IfGet intInputFile, , abytInputBufferlngInPos = 0RaiseEvent FileProgress(lngBytesRead / lngFileLength)DoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERREnd IfEnd IfEnd IfintPrev = ((&H100& * abytWindow(intBufferLocation + 1) + abytWindow(intBufferLocation)) A nd &HFFF) + mcintWindowSize + 1intNext = aintWindowNext(intPrev)aintWindowPrev(intBufferLocation) = intPrevaintWindowNext(intBufferLocation) = intNextaintWindowNext(intPrev) = intBufferLocationIf intNext <> mcintNull Then aintWindowPrev(intNext) = intBufferLocationintBufferLocation = (intBufferLocation + 1) And &HFFFintMatchLen = intMatchLen - 1LoopIf lngInPos >= lngInBufLen Then intMaxLen = intMaxLen - 1LoopIf intByteCodeWritten > 0 ThenReDim Preserve abytOutputBuffer(intByteCodeWritten - 1)Put intOutputFile, lngCurWritten, abytOutputBufferEnd IfClose intInputFileClose intOutputFileIf Len(Dir(m_strOutputFileName)) > 0 Then Kill m_strOutputFileNameName strOutTmpFile As m_strOutputFileNameRaiseEvent FileProgress(1)Exit SubPROC_ERR:Close intOutputFileClose intInputFileIf Len(Dir(strOutTmpFile)) > 0 And Len(strOutTmpFile) > 0 Then Kill strOutTmpFileIf intErrNo = 0 Then intErrNo = 255RaiseEvent ProcssError(LastError(intErrNo))End SubPrivate Sub Decompress()Dim intTemp As IntegerDim intBufferLocation As IntegerDim intLength As IntegerDim bytHiByte As IntegerDim bytLoByte As IntegerDim intWindowPosition As IntegerDim lngFlags As LongDim intInputFile As IntegerDim intOutputFile As IntegerDim abytWindow(mcintWindowSize + mcintMaxMatchLen) As ByteDim strOutTmpFile As StringDim lngBytesRead As LongDim lngBytesWritten As LongDim lngFileLength As LongDim lngOriginalFileLen As LongDim lngInBufLen As Long, abytInBuf() As Byte, abytOutBuf() As ByteDim lngOutBufLen As Long, lngInPos As Long, lngOutPos As LongDim udtFileH As FileHeaderDim intErrNo As IntegerOn Error GoTo PROC_ERRm_bEnableProcss = TrueIf Len(Dir(m_strInputFileName)) = 0 Or Len(m_strInputFileName) = 0 Then intErrNo = 4: GoTo PROC_ERRIf Len(m_strOutputFileName) = 0 Then m_strOutputFileName = m_strInputFileNamestrOutTmpFile = m_strOutputFileName & ".tmp"If Len(Dir(strOutTmpFile)) > 0 Then Kill strOutTmpFileintInputFile = FreeFileOpen m_strInputFileName For Binary Access Read As intInputFilelngFileLength = LOF(intInputFile)Get intInputFile, , udtFileHIf = mcstrSignature And <= ThenSeek #intInputFile, + 1intOutputFile = FreeFileOpen strOutTmpFile For Binary As intOutputFilelngOriginalFileLen =lngFileLength = lngFileLength -lngInBufLen = &H20000lngOutBufLen = &H20000If lngInBufLen > lngFileLength Then lngInBufLen = lngFileLengthReDim abytInBuf(lngInBufLen - 1)ReDim abytOutBuf(lngOutBufLen - 1)Get intInputFile, , abytInBufDo While lngBytesWritten < lngOriginalFileLenlngFlags = lngFlags \ 2If (lngFlags And &H100) = 0 ThenlngFlags = &HFF00& Or abytInBuf(lngInPos)lngBytesRead = lngBytesRead + 1lngInPos = lngInPos + 1If lngInPos >= lngInBufLen ThenIf lngFileLength > lngBytesRead ThenIf lngInBufLen > lngFileLength - lngBytesRead ThenlngInBufLen = lngFileLength - lngBytesReadReDim abytInBuf(lngInBufLen - 1)End IfGet intInputFile, , abytInBufDoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERR lngInPos = 0End IfEnd IfEnd IfIf (lngFlags And 1) ThenabytWindow(intWindowPosition) = abytInBuf(lngInPos)abytOutBuf(lngOutPos) = abytInBuf(lngInPos)lngBytesRead = lngBytesRead + 1lngInPos = lngInPos + 1lngBytesWritten = lngBytesWritten + 1lngOutPos = lngOutPos + 1intWindowPosition = (intWindowPosition + 1) And &HFFFIf lngInPos >= lngInBufLen ThenIf lngFileLength > lngBytesRead ThenIf lngInBufLen > lngFileLength - lngBytesRead ThenlngInBufLen = lngFileLength - lngBytesReadReDim abytInBuf(lngInBufLen - 1)End IfGet intInputFile, , abytInBufDoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERR lngInPos = 0End IfEnd IfIf lngOutPos >= lngOutBufLen ThenPut intOutputFile, , abytOutBuflngOutPos = 0RaiseEvent FileProgress(lngBytesWritten / lngOriginalFileLen)DoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERR End IfElsebytHiByte = abytInBuf(lngInPos)lngBytesRead = lngBytesRead + 1lngInPos = lngInPos + 1If lngInPos >= lngInBufLen ThenIf lngFileLength > lngBytesRead ThenIf lngInBufLen > lngFileLength - lngBytesRead ThenlngInBufLen = lngFileLength - lngBytesReadReDim abytInBuf(lngInBufLen - 1)End IfGet intInputFile, , abytInBufDoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERRlngInPos = 0End IfEnd IfbytLoByte = abytInBuf(lngInPos)intBufferLocation = ((bytLoByte And &HF0) * 16 + bytHiByte) And &HFFF intLength = (bytLoByte And &HF) + mcintMinMatchLenlngBytesRead = lngBytesRead + 1lngInPos = lngInPos + 1If lngInPos >= lngInBufLen ThenIf lngFileLength > lngBytesRead ThenIf lngInBufLen > lngFileLength - lngBytesRead ThenlngInBufLen = lngFileLength - lngBytesReadReDim abytInBuf(lngInBufLen - 1)End IfGet intInputFile, , abytInBufDoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERRlngInPos = 0End IfEnd IfintTemp = intBufferLocation + intLengthDo While intBufferLocation < intTempabytOutBuf(lngOutPos) = abytWindow((intBufferLocation) And &HFFF)abytWindow(intWindowPosition) = abytOutBuf(lngOutPos)intBufferLocation = intBufferLocation + 1lngBytesWritten = lngBytesWritten + 1intWindowPosition = (intWindowPosition + 1) And &HFFFlngOutPos = lngOutPos + 1If lngOutPos >= lngOutBufLen ThenPut intOutputFile, , abytOutBuflngOutPos = 0RaiseEvent FileProgress(lngBytesWritten / lngOriginalFileLen)DoEventsIf m_bEnableProcss = False Then intErrNo = 254: GoTo PROC_ERREnd IfLoopEnd IfLoopIf lngOutPos > 0 ThenReDim Preserve abytOutBuf(lngOutPos - 1)Put intOutputFile, , abytOutBufEnd IfClose intOutputFileElseintErrNo = 5GoTo PROC_ERREnd IfClose intInputFileIf Len(Dir(m_strOutputFileName)) > 0 Then Kill m_strOutputFileNameName strOutTmpFile As m_strOutputFileNameRaiseEvent FileProgress(1)Exit SubPROC_ERR:Close intOutputFileClose intInputFileIf Len(Dir(strOutTmpFile)) > 0 And Len(strOutTmpFile) > 0 Then Kill strOutTmpFileIf intErrNo = 0 Then intErrNo = 255RaiseEvent ProcssError(LastError(intErrNo))End Sub'ClassZip类中的声明与属性、方法、事件Option ExplicitPublic Event FileProgress(sngPercentage As Single)Public Event ProcssError(ErrorDescription As String)Private Type FileHeaderHeaderTag As String * 3HeaderSize As IntegerFlag As ByteFileLength As LongVersion As IntegerEnd TypePrivate mintCompressLevel As LongPrivate m_bEnableProcss As BooleanPrivate m_bCompress As BooleanPrivate m_strInputFileName As StringPrivate m_strOutputFileName As StringPrivate Const mcintWindowSize As Integer = &H1000Private Const mcintMaxMatchLen As Integer = 18Private Const mcintMinMatchLen As Integer = 3Private Const mcintNull As Long = &H1000Private Const mcstrSignature As String = "FMZ"Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (pDest As Any, pSou rce As Any, ByVal dwLength As Long)Public Sub BeginProcss()If m_bCompress ThenCompressElseDecompressEnd IfEnd SubPrivate Function LastError(ErrNo As Integer) As StringSelect Case ErrNoCase 1LastError = "待压缩文件未设置或不存在"Case 2LastError = "待压缩文件长度太小"Case 3LastError = "待压缩文件已经过压缩"Case 4LastError = "待解压文件未设置或不存在"Case 5LastError = "待解压文件格式不对或为本软件不能认别的高版本软件所压缩" Case 254LastError = "用户取消了操作"Case 255LastError = "未知错误"End SelectEnd FunctionPublic Property Get CompressLevel() As IntegerCompressLevel = mintCompressLevel \ 16End PropertyPublic Property Let CompressLevel(ByVal intValue As Integer)mintCompressLevel = intValue * 16If mintCompressLevel < 0 Then mintCompressLevel = 0End PropertyPublic Property Get IsCompress() As BooleanIsCompress = m_bCompressEnd PropertyPublic Property Let IsCompress(ByVal bValue As Boolean)m_bCompress = bValueEnd PropertyPublic Property Let CancelProcss(ByVal bValue As Boolean)m_bEnableProcss = Not bV alueEnd PropertyPublic Property Get InputFileName() As StringInputFileName = m_strInputFileNameEnd PropertyPublic Property Get OutputFileName() As StringOutputFileName = m_strOutputFileNameEnd PropertyPublic Property Let OutputFileName(ByVal strValue As String) m_strOutputFileName = strValueEnd PropertyPublic Property Let InputFileName(ByVal strValue As String) m_strInputFileName = strValueEnd PropertyPrivate Sub Class_Terminate()m_bEnableProcss = FalseEnd SubPrivate Sub Form_Load()Set ObjZip = New ClassZip= "压缩"= "解压"= "中断"End SubPrivate Sub Form_Unload(Cancel As Integer)Set ObjZip = NothingEnd SubPrivate Sub ObjZip_FileProgress(sngPercentage As Single)Label1 = Int(sngPercentage * 100) & "%"End SubPrivate Sub ObjZip_ProcssError(ErrorDescription As String) MsgBox ErrorDescriptionEnd Sub'ClassZip类中的声明与属性、方法、事件Option ExplicitPublic Event FileProgress(sngPercentage As Single)Public Event ProcssError(ErrorDescription As String)Private Type FileHeaderHeaderTag As String * 3HeaderSize As IntegerFlag As ByteFileLength As LongVersion As IntegerEnd TypePrivate mintCompressLevel As LongPrivate m_bEnableProcss As BooleanPrivate m_bCompress As BooleanPrivate m_strInputFileName As StringPrivate m_strOutputFileName As StringPrivate Const mcintWindowSize As Integer = &H1000Private Const mcintMaxMatchLen As Integer = 18Private Const mcintMinMatchLen As Integer = 3Private Const mcintNull As Long = &H1000Private Const mcstrSignature As String = "FMZ"Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (pDest As Any, pSou rce As Any, ByVal dwLength As Long)Public Sub BeginProcss()If m_bCompress ThenCompressElseDecompressEnd IfEnd SubPrivate Function LastError(ErrNo As Integer) As StringSelect Case ErrNoCase 1LastError = "待压缩文件未设置或不存在"Case 2LastError = "待压缩文件长度太小"Case 3LastError = "待压缩文件已经过压缩"Case 4LastError = "待解压文件未设置或不存在"Case 5LastError = "待解压文件格式不对或为本软件不能认别的高版本软件所压缩"Case 254LastError = "用户取消了操作"Case 255LastError = "未知错误"End SelectEnd FunctionPublic Property Get CompressLevel() As IntegerCompressLevel = mintCompressLevel \ 16End PropertyPublic Property Let CompressLevel(ByVal intValue As Integer)mintCompressLevel = intValue * 16If mintCompressLevel < 0 Then mintCompressLevel = 0End PropertyPublic Property Get IsCompress() As BooleanIsCompress = m_bCompressEnd PropertyPublic Property Let IsCompress(ByVal bValue As Boolean)m_bCompress = bValueEnd PropertyPublic Property Let CancelProcss(ByVal bValue As Boolean) m_bEnableProcss = Not bV alueEnd PropertyPublic Property Get InputFileName() As StringInputFileName = m_strInputFileNameEnd PropertyPublic Property Get OutputFileName() As StringOutputFileName = m_strOutputFileNameEnd PropertyPublic Property Let OutputFileName(ByVal strValue As String) m_strOutputFileName = strValueEnd PropertyPublic Property Let InputFileName(ByVal strValue As String) m_strInputFileName = strValueEnd PropertyPrivate Sub Class_Terminate()m_bEnableProcss = FalseEnd Sub。
VisualBasic6.0(VB6.0)安装教程详解visual basic 6.0中⽂版是⼀种由微软公司开发的包含协助开发环境的事件驱动编程语⾔,它源⾃于BASIC编程语⾔,拥有图形⽤户界⾯(GUI)和快速应⽤程序开发(RAD)系统,可以轻易的使⽤DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
VB 6.0中⽂企业版免费下载(206M)类型:编译⼯具⼤⼩:206MB语⾔:简体中⽂时间:2020-01-08查看详情特别提⽰:安装此软件的时候最好退出360杀毒软件(包括360安全卫⼠,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻⽌⽽导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫⼠之类的没关系)!安装过程介绍:将下载的⽂件解压(电脑上需要先安装了压缩软件),然后打开解压后的⽂件夹,如果⾥⾯是⼀个ISO镜像⽂件,则继续解压,如图所⽰:(注意):不能直接双击打开,或者是使⽤虚拟光驱软件加载打开此ISO镜像⽂件,因为此软件在安装了以后,还需要重启电脑,然后进⾏设置,⽽直接双击打开(这也是使⽤虚拟光驱打开的⼀种⽅式)或者是使⽤虚拟光驱软件加载打开的⽂件,通常在重启电脑了以后不会被加载,这样就会导致不会再出现VB6.0的安装对话框,可能会导致安装失败。
然后再打开解压后的⽂件夹,双击运⾏⾥⾯的⽂件SETUP.EXE,即可开始安装,如图所⽰:(注意)如果你使⽤的电脑是Windows7、Windows8(8.1)或者是Windows10操作系统,则可能会出现“程序兼容性”的提⽰,此时直接点击“运⾏程序”即可,不需要进⾏其它的设置,如图所⽰:然后在打开的“安装向导”当中点击“下⼀步”:选择“接受协议”,然后点击“下⼀步”:输⼊ID号“111-1111111”,然后输⼊姓名(可以随意填写),公司名称处可以不填,然后点击“下⼀步”:点击“下⼀步”:点击“下⼀步”:点击“继续”:点击“确定”:然后进⼊搜索已安装组件的过程(注:此过程有可能会⽐较漫长,有的时候看起来像死机⼀样,但不需要进⾏任何操作,等待就可以了):此时如果遇到⼀个“发现了旧版本的Visual SourceSafe”的提⽰,点击“是”和“否”都可以(因为下⾯会取消这个组件的安装,因为如果安装了这个组件,则在此电脑的VB6.0上写的代码,拿到其它的电脑上以后就不能修改了):然后点击“⾃定义安装”,此处选择⾃定义安装的⽬的是为了取消安装那个VSS组件,要不然选择“典型安装”后,会同时安装了VSS组件,这样以后每⼀次打开从其它地⽅拿来的系统源代码时都会有⼀个英⽂提⽰,挺烦⼈的。
使用VB6.0制作软件安装包的详细方法步骤使用VB6.0制作软件安装包的详细方法步骤使用VB6.0打开需要打包的工程,选择菜单栏中的“外接程序”->“外接程序管理器”,在对话框中选择“打包和展开向导”,在“加载行为”选项组中选中“加载/卸载”复选框,然后单击确定按钮。
然后选择菜单栏中的“外接程序”,发现比刚才多了一个“打包和展开向导”,选择它并在对话框中单击打包按钮,后边的事情就简单多了(向导一般做的都很容易的)。
打包向导过程说明:1.选择安装包保存位置默认情况下安装包会放到工程文件目录下的“包”目录。
可以根据需要进行修改。
单击“下一步”。
2.选择包含文件“包含文件”对话框已经自动找出了工程中应用的控件、DLL等文件,检查一下有没有遗漏的文件。
如果有,可以通过“添加”按钮增加用户需要的文件,例如帮助文件Help.chm。
3.选择打包文件类型单击“下一步”显示压缩文件选项对话框。
现在的安装程序一般都用光盘作为载体,选中单个压缩文件即可。
4.设置安装程序标题单击“下一步”显示“安装程序标题”对话框,输入安装程序标题,它会显示在安装背景上。
5.创建启动菜单项单击“下一步”显示“启动菜单项”对话框。
在这里创建“开始菜单”中显示的项目,默认只有运行程序。
6.指定安装位置单击“下一步”显示“安装位置”对话框,在这里设置安装包中的文件具体的安装目录,同样是用宏来指定还可以设置子目录,安装时会自动创建不存在的子目录。
7.共享文件单击“下一步”显示“共享文件”对话框选择可能被多个文件使用的文件如ActiveX控件,这样当程序卸载时,不会把共享文件也删除。
另外,还可以用第三方打包工具。
“打包和展开向导”虽然功能不够强大但简单易用,针对一般的应用已经足够了。
vb6 getactivewindow 例子Visual Basic 6 (VB6)是一种编程语言和集成开发环境,让开发人员可以创建Windows应用程序。
在VB6中,可以使用`GetActiveWindow`函数来获取当前活动窗口的句柄。
下面是一个关于VB6中`GetActiveWindow`函数的例子。
```vbPrivate Declare Function GetActiveWindow Lib "user32" () As LongPrivate Sub Command1_Click()Dim hWnd As LonghWnd = GetActiveWindow()If hWnd = 0 ThenMsgBox "没有找到活动窗口。
"ElseMsgBox "当前活动窗口的句柄为: " & hWndEnd IfEnd Sub```在上面的例子中,我们使用了`GetActiveWindow`函数来获取当前活动窗口的句柄。
函数返回一个32位整数值,表示窗口的句柄。
在按钮的点击事件中,我们调用`GetActiveWindow`函数,并将返回的句柄值存储在`hWnd`变量中。
然后,我们检查`hWnd`的值是否为0。
如果是0,表示没有找到活动窗口,我们会弹出一个消息框显示"没有找到活动窗口"的提示信息。
如果`hWnd`不为0,表示找到了活动窗口,我们会弹出一个消息框,显示"当前活动窗口的句柄为: "加上具体的句柄值。
通过这个例子,我们可以了解如何使用VB6中的`GetActiveWindow`函数来获取当前活动窗口的句柄。
这对于需要根据当前活动窗口执行特定操作的应用程序非常有用。
vb6.0文件操作函数CloseHandle 关闭一个内核对象。
其中包括文件、文件映射、、线程、安全和同步对象等CompareFileTime 对比两个文件的时间CopyFile 复制文件CreateDirectory 创建一个新目录CreateFile 打开和创建文件、管道、邮槽、服务、设备以及控制台CreateFileMapping 创建一个新的文件映射对象DeleteFile 删除指定文件DeviceIoControl 对设备执行指定的操作DosDateTimeT oFileTime 将DOS日期和时间值转换成一个win32FILETIME值FileTimeToDosDateTime 将一个win32FILETIME值转换成DOS 日期和时间值FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构FindClose 关闭由FindFirstFile函数创建的一个搜索句柄FindFirstFile 根据文件名查找文件FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘GetBinaryType 判断文件是否可以执行GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数GetCurrentDirectory 在一个缓冲区中装载当前目录GetDiskFreeSpace 获取与一个磁盘的组织有关的,以及了解剩余空间的容量GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的GetDriveType 判断一个磁盘驱动器的类型GetExpandedName 取得一个压缩文件的全名GetFileAttributes 判断指定文件的属性GetFileInformationByHandle 这个函数提供了获取文件的一种机制GetFileSize 判断文件长度GetFileTime 取得指定文件的时间GetFileType 在给出文件句柄的前提下,判断文件类型GetFileVersionInfo从支持版本标记的一个模块里获取文件版本GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本需要一个多大的缓冲区GetFullPathName 获取指定文件的完整路径名GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径GetOverlappedResult 判断一个重叠操作当前的状态GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表GetPrivateProfileString 为初始化文件中指定的条目取得字串GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表GetProfileString 为win.ini初始化文件中指定的条目取得字串GetShortPathName 获取指定文件的短路径名GetSystemDirectory 取得系统目录(即System目录)的完整路径名GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用GetTempPath 获取为临时文件指定的路径GetVolumeInformation 获取与一个磁盘卷有关的GetWindowsDirectory 获取Windows目录的完整路径名hread 参考lreadhwrite参考lwrite函数lclose 关闭指定的文件lcreat 创建一个文件llseek 设置文件中进行读写的当前位置LockFile 锁定文件的某一部分,使其不与其他应用程序共享LockFileEx 与LockFile相似,只是它提供了更多的功能lopen 以二进制模式打开指定的文件lread 将文件中的数据读入内存缓冲区lwrite 将数据从内存缓冲区写入一个文件LZClose 关闭由LZOpenFile或LZInit函数打开的一个文件LZCopy 复制一个文件LZInit 这个函数用于初始化内部缓冲区LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件LZRead 将数据从文件读入内存缓冲区LZSeek设置一个文件中进行读写的当前位置MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间MoveFile 移动文件OpenFile 这个函数能执行大量不同的文件操作OpenFileMapping 打开一个现成的文件映射对象QueryDosDevice 在中,DOS设备名会映射成NT系统设备名。
VB中利用Winrar进行文件压缩一些数据库文件(如access文件)在远程传输过程中可能由于文件比较大而影响传递效果。
如果进行压缩以后再传递,会减少传递时间,避免意外的发生,同时也保证了传递效果。
我们在压缩文件时,最常用的压缩工具为winrar和winzip,笔者在vb编程过程中利用winrar 工具来压缩数据库文件,并完成远程传输,十分方便,在此向大家介绍一下。
用winzip的方法类似。
一、shell函数shell函数是vb中的内部函数,它负责执行一个可执行文件,返回一个variant(double),如果成功的话,代表这个程序的进程id,若不成功,则会返回0。
shell的语法:shell(pathname[,windowstyle])。
pathname 为必需参数。
类型为string,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。
windowstyle为可选参数。
integer类型,指定在程序运行时窗口的样式。
windowstyle有以下这些值。
常量值描述vbhide 0 窗口被隐藏,且焦点会移到隐式窗口。
vbnormalfocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
vbminimizedfocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。
vbmaximizedfocus 3 窗口是一个具有焦点的化窗口。
vbnormalnofocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
vbminimizednofocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。
二、关于winrar的用法主要介绍以下如何在winrar中用命令行来压缩和解压缩文件。
压缩:winrar a [-switches] [files] [@file lists]例如你想把try.mdb压缩到c盘下,可以winrar a c:/try.rar c:/try.mdb解压缩:如果带目录解压缩winrar x [-switches] [files] [@file lists] [destionation folder/]如果在当前目录解压缩,即解压缩时不写目录名winrar e [-switches] [files] [@file lists] [destionation folder/]例如你想把try.rar解压缩到c盘下,可以winrar x c:/try.rar c:/try.mdb三、一个例子在vb中新建一个工程,在form1中添加两个按钮command1、command2和command3,把他们的caption属性分别设为'压缩文件'、'解压缩文件'和'传递文件'。
1.在vb中播放声音_____________________________________ 12.电脑没声音解决办法大全______________________________ 23添加背景音乐_________________________________________ 24如何在VB中插入flv视频?____________________________ 35.VC中mediaplayer控件________________________________ 66.VB编程: vb程序怎样控制系统声音 _____________________ 77.在VB中用PictureClip控件实现动画 __________________ 118.如何在VB中制作不回显的文本框 ______________________ 129.ActiveX控件的创建__________________________________ 1410.基于GPS定位的嵌入式汽车监控器设计 ________________ 1611.VB6.0中通过MSChart控件调用数据库_________________ 1912.Do……loop ________________________________________ 2113.自动关机的代码____________________________________ 2214. 删除指定文件_____________________________________ 2515.编写那个一元二次方程求解的代码。
__________________ 2716.vb程序代码解释____________________________________ 2717.弹力球____________________________________________ 3118.用Access创建一个名为“学生”,MDB的数据库_________ 3219.请逐句翻译下段VB程序代码_________________________ 3420.vb6 windows media player控件使用方法______________ 3621.vb6中的combo控件如何使用?_______________________ 3722.vb6.0中MSchart控件的使用_________________________ 3923.vb6.0 使用commondialog控件提示没安装字体 ________ 4024.VB6.0 MSHFlexGrid控件_____________________________ 4125.Cool!用VB自制媒体播放器_________________________ 41monDialog 控件_________________________________ 4327.VB中插入视频______________________________________ 461)如何在VB中插入flv视频?_____________________________ 471.在vb中播放声音吧,方法很多比如mci API,媒体播放器控件,MCI控件,directsound组件,都可以比较简单的是媒体播放器控件和mci控件提问人的追问 2009-12-11 16:10你能不能给出代码!具体问题是点击一下窗体发出声音,里面用的soundfile!谢谢回答人的补充 2009-12-11 16:29 Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) Const SND_SYNC = &H0Const SND_ASYNC = &H1Const SND_NODEFAULT = &H2Const SND_LOOP = &H8Const SND_NOSTOP = &H10Const SND_MEMORY = &H4声明这个api然后在点击事件中调用sndPlaySound "路径",SND_ASYNC2.电脑没声音解决办法大全一、查看任务栏音量图标,是否点击成静音了,音量是否调到最小了。
简述vb6.0编程步骤Vb6.0编程步骤是指使用Microsoft Visual Basic 6.0进行软件开发的一系列操作和流程。
在这篇文章中,我们将逐步介绍从开始一个项目到最终编译和发布的整个开发过程。
一、项目启动和界面设计1. 创建新项目:启动Vb6.0开发环境后,选择“新建项目”,选择新的标准EXE 项目,命名并选择存储位置。
2. 界面设计:使用Vb6.0提供的拖拽式设计工具,设计应用程序的界面。
可以添加按钮、文本框、标签和其他控件,调整它们的位置和大小,并设置属性。
二、添加代码1. 为控件添加事件:选择一个控件,然后切换到“代码”视图,在事件列表中选择要响应的事件,例如按钮的“Click”事件。
2. 编写代码:使用Vb6.0的Visual Basic语言编写代码来完成所需的功能。
可以使用条件语句、循环、函数和变量等编程概念。
代码编辑器会提供自动完成和语法检查等功能,帮助开发者编写正确的代码。
三、调试和测试1. 调试代码:在编写完代码后,可以使用Vb6.0的调试功能来检查和修复错误。
可以设置断点,在代码执行过程中逐步跟踪,查看变量的值,并观察程序的行为。
2. 运行和测试:使用Vb6.0的“启动”按钮来运行程序,在界面上进行操作,测试程序的功能和交互性能。
通过根据程序输出和用户输入的结果检查程序是否按预期工作。
四、编译和发布1. 编译项目:完成程序的开发和测试后,可以使用Vb6.0的“发布”功能将项目编译为可执行文件(.exe)或安装程序。
2. 配置发布选项:在发布向导中,可以选择发布格式、版本号等选项,并配置相关设置,例如程序是否需要依赖其他文件和组件。
3. 执行发布:执行发布向导,生成所需的文件,并将其部署到目标计算机上进行安装和测试。
以上是Vb6.0编程的一般步骤和流程。
当然,在实际开发中,可能还需要进行其他一些操作,例如处理数据库、调用外部API等。
此外,良好的编程习惯、代码注释、版本控制和团队合作等也是编程过程中需要注意的方面。
VBA、VB6文件操作范例Public Sub TextFile_Output_Input_Test()Close #1Open "a.txt" For Output As #1Write #1, 1234567, True, Now, -0.32323, "Hello, world" & vbCrLf & "Yes"Write #1, "Yes,It's a test!" & vbCrLf & "I love it" & vbCrLf & "OK"Close #1Shell "notepad.exe a.txt", vbNormalFocusMsgBox "We are going to read the file"Dim a As Long, b As Boolean, c As Date, d As Single, e As String, f As String Open "a.txt" For Input As #1Input #1, a, b, c, d, e, fClose #1MsgBox aMsgBox bMsgBox cMsgBox dMsgBox eMsgBox fKill "a.txt"End SubPublic Sub TextFile_Structure_WriteAndRead_Test()Dim ps As CollectionSet ps = New CollectionDim p As Personps.Add Creators.NewPerson("Jobs", Male, 32)ps.Add Creators.NewPerson("李彦宏", Male, 43)ps.Add Creators.NewPerson("Gates", Male, 45)ps.Add Creators.NewPerson("马化腾", Male, 40)ps.Add Creators.NewPerson("Mayee", Female, 28)Close #1Open "b.txt" For Output As #1For Each p In psWrite #1, , p.Sex, p.AgeNextClose #1Dim a As String, b As SexType, c As IntegerOpen "b.txt" For Input As #1For i = 1 To ps.CountInput #1, a, b, cSet p = Creators.NewPerson(a, b, c)Debug.Print "(" & & "," & p.Sex & "," & p.Age & ")"NextClose #1Shell "notepad.exe b.txt", vbNormalFocusKill "b.txt"End SubPublic Sub TextFile_Append_Test()Open "c.txt" For Output As #1Print #1, "hello world"Close #1Open "c.txt" For Input As #1Dim a As StringLine Input #1, aClose #1MsgBox aShell "notepad.exe c.txt", vbNormalFocusEnd SubPublic Sub RandomFile_WriteAndRead_Test()Close #1Open "d.txt" For Random As #1Dim ps As CollectionSet ps = New CollectionDim p As Personps.Add Creators.NewPerson("Jobs", Male, 32)ps.Add Creators.NewPerson("Gates", Male, 45)ps.Add Creators.NewPerson("Mayee", Female, 28)ps.Add Creators.NewPerson("马云", Male, 51)ps.Add Creators.NewPerson("董明珠", Female, 40)Index = 1For Each p In psPut #1, Index, Put #1, Index + 1, p.SexPut #1, Index + 2, p.AgeIndex = Index + 3NextClose #1Open "d.txt" For Random As #1Index = Index - 1Dim a As String, b As SexType, c As IntegerFor i = 1 To Index Step 3Get #1, i, aGet #1, i + 1, bGet #1, i + 2, cSet p = Creators.NewPerson(a, b, c)Debug.Print p.ToString()NextClose #1End SubPublic Sub BinaryFile_Test()Kill "e.dll"Close #1Open "e.dll" For Binary As #1Dim ps As CollectionSet ps = New CollectionDim p As Personps.Add Creators.NewPerson("Jobs", Male, 52)ps.Add Creators.NewPerson("杨澜", Female, 33)ps.Add Creators.NewPerson("Gates", Male, 53)ps.Add Creators.NewPerson("马云", Male, 51)ps.Add Creators.NewPerson("Mayee", Female, 28)ps.Add Creators.NewPerson("董明珠", Female, 40)'对于字符串使用定长字符串来读写以Binary形式打开的文件Dim s As String * 12For Each p In pslc = Seek(1)s = Put #1, lc, slc = Seek(1)Put #1, lc, p.Sexlc = Seek(1)Put #1, lc, p.AgeNextClose #1Open "e.dll" For Binary As #1Dim a As String * 12, b As SexType, c As IntegerDolc = Seek(1)Get #1, lc, alc = Seek(1)Get #1, lc, blc = Seek(1)Get #1, lc, c'必须丢弃最后一次读取,因为这次读取虽然成功,但是得到的将是错误值If EOF(1) Then Exit DoSet p = Creators.NewPerson(RTrim(a), b, c)Debug.Print p.ToString()LoopClose #1End Sub‘==================================Person类Public Name As StringPublic Sex As SexTypePublic Age As IntegerPublic Function ToString()ToString = "[Name:" & & ",Sex:" & Choose(Me.Sex + 2, "Female", "Shemale", "Male") & ",Age:" & CStr(Me.Age) & "]"End Function‘==================================Creators模块中的NewPerson方法Public Function NewPerson(aName As String, aSex As SexType, aAge As Integer) As Person Dim p As New Person = aNamep.Sex = aSexp.Age = aAgeSet NewPerson = pEnd Function‘==================================由以上可得,使用write和input语句可以实现数据的结构化存储,用print语句写的信息比较简单,读取时要费一番功夫来解析,用put和get语句对Random和Binary文件的读写也是结构化的,记住对Binary文件使用EOF函数总是会在最后多出一个空白记录来,所以要注意舍弃最后一个记录。
Vb6.0及MSDN安装为大家找到了VB6.0企业版本的安装方法,希望可以帮助大家。
1、准备工作: 下载软件/ftp624/user/soft/2006/vb60.rar记得一定要用迅雷下载!2、安装Visual Basic 6.0的步骤①把下载的压缩包解压出来②在解压出来的文件夹VB60CHS中双击文件“SETUP.EXE”执行安装程序。
出现VB的安装向导。
③直接点击“下一步”,选中“接受协议”,再点击“下一步”④在产品的ID号中全部输入“1”(用一串“1”把两个空格都填写满),姓名和公司名称任意填,再点击“下一步”⑤选中“安装Visual Basic 6.0中文企业版”,再点击“下一步”⑥一般情况下直接点击“下一步”(公用文件的文件夹可以不需要改变),稍等...,直接点击“继续”,直接点击“确定”,直接点击“是”⑦选择“典型安装”或“自定义安装”,初学者可以选前者。
在弹出对话框中直接点击“是”,⑧在弹出的对话框中,点击“重新启动Windows”。
继续下一步安装3、安装MSDN(帮助文件)MSDN安装包并不包含在VB企业版中,需要另外下载!/Soft/shequjiaoyu/jsjzl/vb/200603/26.html/space/show/mowuming/MSDN_for_VB_6.0.rar/.page /file/bhdlijco/f/13912283.html①重装启动计算机后,在出现的VB安装界面中可以直接安装帮助文件,选中“安装MSDN”项,再点击“下一步”②在弹出的对话框中按“浏览”,找到“MSDN for VB 6.0”文件夹③按“继续”按钮,再按“确定”,选中“接受协议”④按“自定义安装”,在“VB6.0帮助文件”前打钩,再点击“继续”⑤完成MSDN的安装,点击“确定”。
⑥直接点击“下一步”,把“现在注册”项去掉,再点击“完成”,即完成了VB的安装4、安装补丁程序安装VB补丁程序这非常重要,它可以避免许多错误,并可以直接使用Access2000,否则要转换到低版本的Access数据库。
【最新整理,下载后即可编辑】第一章Visual Basic介绍第二章用户界面设计第三章编程的基础(含变量,常量,条件语句,循环语句,自定义变量,自定义过程,对象和类等基础)第四章Windows 95的新控件Visual Basic的输入输出第五章Visual Basic的鼠标事件和绘图第六章Visual Basic的数据库、报表、预览、打印第七章从文件中存取资料第八章发行应用程序第九章使用Windows API和用Visual Basic建立自己的屏幕保护程序第十章创建ActiveX控件第十一章ActiveX文档第十二章用对象链接与嵌入(OLE)扩展Visual Basic第十三章使用资源文件第十四章用Visual Basic建立ActiveX DLL第十五章用Winsock控件进行Internet通信第十六章Web浏览控件第一章Visual Basic介绍§2 窗体和命令钮介绍一、窗体窗体是Windows的基本组成部分,这也是为什么这个操作系统叫Windows的原因。
它的主要属性除上面介绍的以外,还包括:1,Appearance属性这个属性用来决定控件是否采用三维效果。
2,BorderStyle属性这个属性决定了窗体的边框形式,共有6种属性值。
改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它只在运行时才变为你所要求的样子。
3,ControlBox属性程序员用来决定采用不采用控制框的属性,仅在程序运行时才有效。
4,Font属性程序员可以改变该窗体上显示信息的字体,它控制着直接在窗体上打印的文本显示。
5,Icon属性这个属性是用户经常要使用的一种属性。
当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。
为自己的窗体设置该属性时,要控制住自己挑三拣四的冲动。
6,Visible属性该属性决定窗体是否可见。
使用Visual Basic 6.0 控制WinRAR进行压缩或解压等操作(1)命令行语法:--------------------------------------------------------------------------------从命令行也可以运行WinRAR 命令,常规的命令行语法描述如下:WinRAR <命令> -<开关1> -<开关N><压缩文件><文件...><@列表文件...><解压路径\>a) 如果未指定文件或是列表文件时,WinRAR 将会以缺省的*.* 运行全部的文件;b) 如果未指定压缩文件扩展名时,WinRAR 将会使用在压缩配置中选定的默认压缩文件格式。
但你可以指定.RAR 或.ZIP 扩展名来替换它们;c) 在命令行所输入的开关会替换相同的配置设置值;d) 在命令c 、e、s、t、rr、k 和x 可在压缩文件名中使用通配符。
如此可以用单个的命令来进行超过一个以上的压缩文件,除此之外,如果你指定-r 开关于这些命令时,它们将会搜索在子文件夹中的压缩文件;e) 某些命令和开关只应用在RAR 压缩文件,有些则在RAR 和ZIP 都可使用,而某些则可应用在全部的压缩文件格式。
这一些都得看压缩文件格式所提供的特性而定;f) 命令和开关的大小写是相同意思的,你可以用大写或者小写来下命令均可;g)你可以在命令行中同时指定普通的文件名和列表文件名;h)解压路径只与命令e 和x ,搭配使用。
指出解压文件添加的位置。
如果文件夹不存在时,会自动创建。
(2)字母命令列表(3)详解各个命令:--------------------------------------------------------------------------------命令 A - 添加文件到压缩文件添加指定的文件和文件夹到压缩文件中。
此命令行等同于添加。
注意: 因为分卷压缩文件修改是禁用的,此命令无法应用来更新分卷压缩文件,只用于创建时。
例子:1.从当前文件夹添加全部*.hlp文件到压缩文件help.rar中WinRAR a help *.hlp2.从当前文件夹和子文件夹压缩全部文件成为362000 字节大小、固实的、分卷自解压文件save.part1.exe,save.part2.rar,save.part3.rar 等,并在每一个分卷中添加恢复记录WinRAR a -r -v362 -s -sfx -rr save因为未指定文件名,全部文件(*) 将会被添加。
3.作为一个特别的例外,如果目录名被作为参数指定并且目录名不包含文件掩码和以反斜线结尾,即使没有指定开关-r ,目录和子目录的所有内容都会被添加到压缩文件中。
下面的命令将会把文件夹Bitmaps 中全部的文件添加到RAR 压缩文件Pictures 中: WinRAR a Pictures.rar Bitmaps4.如果文件夹名包含文件掩码或以反斜线结尾,应用普通规则,你需要指定开关-r 处理它的子文件夹。
下面的命令将会把文件夹Bitmaps 中除了子文件夹外全部的文件添加,因为没有指定开关-r:WinRAR a Pictures.rar Bitmaps\*命令 C - 添加压缩文件注释--------------------------------------------------------------------------------命令 C - 添加压缩文件注释此命令允许在压缩文件中添加注释。
RAR 压缩文件的最大注释长度是62000 字节,而ZIP 压缩文件则为32768 字节。
添加压缩文件注释也可以通过使用压缩文件管理命令添加压缩文件注释。
因为分卷压缩文件修改是禁用的,所以注释无法应用在分卷压缩。
当创建分卷压缩时,你可以使用开关-z<文件>来添加注释到分卷压缩。
例子:a) 添加注释到压缩文件distrib.rarWinRAR c distrib.rarb) 从文件添加注释可以使用-z<文件>开关。
WinRAR c -zinfo.txt dummy--------------------------------------------------------------------------------命令CH - 改变压缩文件参数此命令能和大多数压缩文件变量开关一起使用修改压缩文件参数。
对于象-av, -cl, -cu, -tl, 等没有专门命令的开关特别方便。
它不能重新压缩、解密或加密压缩文件数据,它不能整合或创建卷。
如果不和其它开关一起使用,'ch' 命令仅复制压缩文件数据而不修改它。
例如:设置压缩文件时间为最新的文件WinRAR ch -tlfiles.rar--------------------------------------------------------------------------------命令CV - 转换压缩文件此命令提供命令行界面的WinRAR 转换压缩文件格式。
你可以让它和开关-y 组合跳过“转换压缩文件”对话框并使用默认参数开始操作。
使用在“转换压缩文件”的“保存”按钮来改变默认参数。
例如:使用默认转换参数转换c:\files 中所有的ZIP 压缩文件WinRAR cv -y c:\files\*.zip--------------------------------------------------------------------------------命令CW - 写压缩文件注释到指定文件此命令允许保存一个压缩文件的注释到文件。
输出文件的格式依赖于-sc开关。
例子:a) 存储压缩文件arc 的注释到ASCII 文件comment.txtWinRAR cw arc comment.txtb) 存储压缩文件arc 的注释到Unicode文件unicode.txtWinRAR cw -scuc arc unicode.txt--------------------------------------------------------------------------------命令 D - 从压缩文件删除文件从压缩文件删除指定的文件和文件夹。
此命令行命令相当于压缩文件管理命令删除。
注意:1) 如果从压缩文件删除全部的文件时,空白的压缩文件将会被删除。
2) 因为分卷压缩文件修改是禁用的,此命令无法应用于分卷压缩。
例子:从压缩文件dummy 删除全部的*.dmy文件WinRAR d dummy *.dmy--------------------------------------------------------------------------------命令 E - 从压缩文件解压压缩,忽略路径忽略路径解压压缩的文件到当前或指定的文件夹。
此命令行对应的是压缩文件管理命令解压到指定文件夹并在解压路径和选项对话框“不解压路径”的选项是启用时。
例子:在当前文件夹,从全部的RAR 压缩文件解压所有的*.doc 文件到当前文件夹WinRAR e *.rar *.doc--------------------------------------------------------------------------------命令 F - 整理压缩文件内的文件只有在压缩文件中的文件比添加的还旧时才更新。
此命令不会把新文件添加到压缩文件中。
命令行等同于添加到压缩文件并且在压缩文件名和参数对话框选择了“只刷新已存在的文件”的更新模式。
因为分卷压缩文件修改是禁用的,所以此命令无法应用在分卷压缩。
另请参阅: 命令A - 添加文件到压缩文件--------------------------------------------------------------------------------命令I[i|c|h|t]=<字符串> - 在压缩文件中查找字符串在压缩文件中查找字符串。
支持下列参数:i - 不区分大小写查找( 默认);c - 区分大小写查找;h - 十六进制查找;t - 使用ANSI, Unicode 和OEM 字符表;如果没有指定参数,它可以使用简单的命令行语法i<字符串>代替i=<字符串>它还允许和其他参数一起指定‘t’变量,例如,ict=字符串,使用上述所有字符表执行区分大小写的查找。
由于技术限制,现在WinRAR 不支持在ACE 和7Z 压缩文件格式中查找。
例子:1)WinRAR "ic=first level" -r c:\*.rar *.txt在磁盘C:中的*.RAR 压缩文件中的*.txt 文件中执行区分大小写搜索"first level" 字符串。
2) rarih= f0e0aeaeab2d83e3a9 -r e:\texts在e:\text 目录下的RAR 压缩文件中查找十六进制字符串f0 e0aeaeab 2d 83 e3 a9 。
--------------------------------------------------------------------------------命令K - 锁定压缩文件此命令可防止WinRAR 在未来对压缩文件的任何修改。
此命令行命令相当于压缩文件管理命令锁定压缩文件。
例子:WinRAR k release--------------------------------------------------------------------------------命令M - 移动文件和文件夹到压缩文件类似命令 a ,但在压缩操作成功完成后,文件和文件夹将会被清除。
此命令行等同于添加到压缩文件并且在压缩文件名和参数对话框中启用“压缩之后删除”选项。
因为分卷压缩文件修改是禁用的,所以此命令无法应用在更新分卷压缩,只能创建。
--------------------------------------------------------------------------------命令R - 修复受损的压缩文件压缩文件修复由二个阶段所组成。
首先,损坏的压缩文件会扫描恢复记录(参阅rr命令)。
如果压缩文件包含先前添加的恢复记录,而且损坏的数据部分是连续性的,并低于N*512 字节,N 代表置入压缩文件内恢复扇区的数目,压缩文件成功重建的机会是非常高的。
当此阶段完成时,新的压缩文件将会创建,叫做_recover.rar。