vb 检测文件大小或者检测文件md5

vb检测文件大小或者检测文件md5最好使用后者因为我怕(在不同的电脑上同一个文件文件大小会不会不一样?)打开程序时检查当前文件夹里的data文件夹里的123.exe是否是... vb 检测文件大小或者检测文件md5 最好使用后者 因为我怕(在不同的电脑上同一个文件 文件大小会不会不一样?) 打开程序时检查当前文件夹里的data文件夹里的 123.exe 是否是我想要的这个文件(通过文件大小或者是md5) 如果是提示 是 如果不是提示 不是 展开
 我来答
曹晓山11
2015-07-07 · 知道合伙人互联网行家
曹晓山11
知道合伙人互联网行家
采纳数:3033 获赞数:52078
毕业南阳理工学院计算机科学与技术专业,本科学位。互联网行业从业3年工作经验,读过编程类相关书籍多本。

向TA提问 私信TA
展开全部

VB检查文件的大小和检测文件MD5值的代码如下,根据下面注释和实际应用分析:

1、VB代码检查文件大小代码如下。

/**
*FileLen函数,返回Long,代表一个文件的长度,单位是字节。
*语法:
*FileLen(pathname)   
*必要的pathnam参数是用来指定一个文件名的字符串表达式。
*pathname可以包含目录或文件夹、以及驱动器。
*说明: 
当调用FileLen函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。  
注意:若要取得一个打开文件的长度大小,使用LOF函数。
**/
//实际应用:
If FileLen(rst.Fields("pic1")) > 1 Then
  Picture1.Picture = LoadPicture(rst.Fields("pic1") & "")
  L1.Caption = Trim(rsttemp.Fields("p1time") & "")
  Else
  Picture1.Picture = LoadPicture("")
  L1.Caption = strNorz
  End If
//图片文件的路径保存在数据库的pic1字段

2、VB检测文件的MD5值,代码如下。

Option Explicit
Option Base 0
Public Type MD5_CTX
    i(1) As Long
    buf(3) As Long
    inc(63) As Byte
    digest(15) As Byte
End Type

Public Declare Sub MD5Init Lib "Cryptdll.dll" (ByVal pContex As Long)
Public Declare Sub MD5Final Lib "Cryptdll.dll" (ByVal pContex As Long)
Public Declare Sub MD5Update Lib "Cryptdll.dll" (ByVal pContex As Long, ByVal lPtr As Long, ByVal nSize As Long)

Public Function ConvBytesToBinaryString(bytesIn() As Byte) As String
    Dim i As Long
    Dim nSize As Long
    Dim strRet As String
    
    nSize = UBound(bytesIn)
    For i = 0 To nSize
         strRet = strRet & Right$("0" & Hex(bytesIn(i)), 2)
    Next
    ConvBytesToBinaryString = strRet
End Function

Public Function GetMD5Hash(bytesIn() As Byte) As Byte()
    Dim ctx As MD5_CTX
    Dim nSize As Long
    
    nSize = UBound(bytesIn) + 1
    
    MD5Init VarPtr(ctx)
    MD5Update ByVal VarPtr(ctx), ByVal VarPtr(bytesIn(0)), nSize
    MD5Final VarPtr(ctx)
    
    GetMD5Hash = ctx.digest
End Function

Public Function GetMD5Hash_Bytes(bytesIn() As Byte) As String
    GetMD5Hash_Bytes = ConvBytesToBinaryString(GetMD5Hash(bytesIn))
End Function

Public Function GetMD5Hash_String(ByVal strIn As String) As String
    GetMD5Hash_String = GetMD5Hash_Bytes(StrConv(strIn, vbFromUnicode))
End Function

Public Function GetMD5Hash_File(ByVal strFile As String) As String
    Dim lFile As Long
    Dim bytes() As Byte
    Dim lSize As Long
    
    lSize = FileLen(strFile)
    If (lSize) Then
        lFile = FreeFile
        ReDim bytes(lSize - 1)
        Open strFile For Binary As lFile
        Get lFile, , bytes
        Close lFile
        GetMD5Hash_File = GetMD5Hash_Bytes(bytes)
    End If
End Function
oiu13
2015-04-15 · TA获得超过249个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:220万
展开全部

这个是最单获取文件长度的办法:

Dim Filepath$, s&
s = FileLen("你的路径")
Text3 = s

如果引用 Microsoft Scripting Runtime

再用 Size方法读取大小换电脑应该不会改变的大小的。


MD5 算法代码有点长,给个联系方式发你



或者我加Q 但一发Q就被屏蔽。VB运行下行 Msgbox 会有Q号

MsgBox Asc("嘬") / -2 & Abs(Asc("湎")) & "6"


你这是只要exe可执行程序吗?

追问
您没理解对我的意思,
例: 检查当前文件夹里的 123.txt 是否是 123456 字节
如果是 提示 是 否则提示不是。

msgbox “Q ”,,"12363049"
追答
这是你Q吗,我加过了
你是要将文件大小数据信息写到 程序里还是要从配置文件里读取,
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianqing20wen

2015-04-15 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5364万
展开全部
Private Sub Command1_Click()
If FileLen(app.path & "\data\123.exe") = 12345 Then
MsgBox "是"
Else
MsgBox "否"
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式