这是我用来获取文件版本信息的类:
选项显式
'属性存储变量
私有 m_strCompanyName 作为字符串
私有 m_strFileDescription 作为字符串
私有 m_strFileVersion 作为字符串
私有 m_strInternalName 作为字符串
私有 m_strCopyright 作为字符串
私有 m_strOriginalFileName 作为字符串
私有 m_strProductName 作为字符串
私有 m_strProductVersion 作为字符串
私有 m_strPrivateBuild 作为字符串
私有 m_strSpecialBuild 作为字符串
私有 m_strComments 作为字符串
私有 m_strLegalTrademark 作为字符串
Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function GetSystemDirectory Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long
Private Declare Function lstrcpy Lib "Kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Sub MoveMemory Lib "Kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal Length As Long)
Private Declare Function OpenFile Lib "Kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) 只要
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) 只要
私有常量 OFS_MAXPATHNAME = 128
私有常量 OF_EXIST = &H4000
私有常量 INVALID_HANDLE_VALUE = -1
私有类型 OFSTRUCT
cBytes 作为字节
fFixedDisk 作为字节
nErrCode 只要
保留1只要
保留2只要
szPathName(OFS_MAXPATHNAME) 作为字节
结束类型
公共函数 GetVersionInfo(ByRef lpFile As String) As Boolean
将缓冲区调暗为字符串
调暗 rc 只要
将 FullFileName 暗淡为字符串
暗淡 sFName 作为字符串
将 lBufferLen 变暗
Dim lDummy 只要
出错时转到 errGetVersionInfo
If FileExists(lpFile) Then
缓冲区 = 字符串(255, 0)
'*** 获取大小 ****
lBufferLen = GetFileVersionInfoSize(lpFile, lDummy)
如果 lBufferLen 0 则
将 bytebuffer(255) 调暗为字节
MoveMemory bytebuffer(0), lVerPointer, lBufferLen
将 Lang_Charset_String 调暗为字符串
将十六进制数变暗
十六进制数 = CLng(bytebuffer(2)) + CLng(bytebuffer(3)) * &H100 + _
CLng(字节缓冲区(0)) * &H10000 + CLng(字节缓冲区(1)) * &H1000000
Lang_Charset_String = Hex(HexNumber)
'现在我们改变语言ID和代码页的顺序
'并将其转换为字符串表示形式。
'例如,它可能看起来像 040904E4
'或者把它全部分开:
'04-------- = SUBLANG_ENGLISH_USA
'--09---- = LANG_ENGLISH
' ----04E4 = 1252 = Windows 的代码页:多语言
做而 Len(Lang_Charset_String) 0
End If 'lBufferLen INVALID_HANDLE_VALUE Then
文件存在 = 真
别的
文件存在 = 假
万一
结束功能
Friend 属性获取 CompanyName() 作为字符串
公司名称 = m_strCompanyName
结束属性
Private Property Let CompanyName(ByVal vNewValue As String)
m_strCompanyName = Trim$(vNewValue)
结束属性
Friend 属性获取 FileDescription() 作为字符串
文件描述 = m_strFileDescription
结束属性
私有属性 Let FileDescription(ByVal vNewValue As String)
m_strFileDescription = 修剪$(vNewValue)
结束属性
Friend 属性获取 FileVersion() 作为字符串
FileVersion = m_strFileVersion
结束属性
私有属性 Let FileVersion(ByVal vNewValue As String)
m_strFileVersion = 修剪$(vNewValue)
结束属性
Friend 属性获取 InternalName() 作为字符串
内部名称 = m_str 内部名称
结束属性
Private Property Let InternalName(ByVal vNewValue As String)
m_strInternalName = Trim$(vNewValue)
结束属性
朋友属性获取版权()作为字符串
版权所有 = m_strCopyright
结束属性
私有财产让版权(ByVal vNewValue 作为字符串)
m_strCopyright = 修剪$(vNewValue)
结束属性
Friend 属性获取 OriginalFileName() 作为字符串
原始文件名 = m_strOriginalFileName
结束属性
私有属性 Let OriginalFileName(ByVal vNewValue As String)
m_strOriginalFileName = Trim$(vNewValue)
结束属性
Friend 属性获取 ProductName() 作为字符串
ProductName = m_strProductName
结束属性
Private Property Let ProductName(ByVal vNewValue As String)
m_strProductName = 修剪$(vNewValue)
结束属性
Friend 属性获取 ProductVersion() 作为字符串
ProductVersion = m_strProductVersion
结束属性
Private Property Let ProductVersion(ByVal vNewValue As String)
m_strProductVersion = 修剪$(vNewValue)
结束属性
Friend 属性获取 PrivateBuild() 作为字符串
ProductVersion = m_strPrivateBuild
结束属性
Private Property Let PrivateBuild(ByVal vNewValue As String)
m_strPrivateBuild = Trim$(vNewValue)
结束属性
Friend 属性获取 SpecialBuild() 作为字符串
ProductVersion = m_strSpecialBuild
结束属性
Private Property Let SpecialBuild(ByVal vNewValue As String)
m_strSpecialBuild = Trim$(vNewValue)
结束属性
Friend 属性获取 Comments() 作为字符串
评论 = m_strComments
结束属性
私有属性让评论(ByVal vNewValue 作为字符串)
m_strComments = vNewValue
结束属性
Friend 属性获取 LegalTrademark() 作为字符串
LegalTrademark = m_strLegalTrademark
结束属性
Private Property Let LegalTrademark(ByVal vNewValue As String)
m_strLegalTrademark = vNewValue
结束属性
这些是我对 IE 8 的结果。
公司名称:Microsoft Corporation
文件描述:Internet Explorer
产品版本:8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339)
内部名称:iexplore
法律版权:© Microsoft Corporation。版权所有。
原始文件名:IEXPLORE.EXE
产品名称:Windows® Internet Explorer
注释:Windows® Internet Explorer
商标:Windows® Internet Explorer
文件版本:8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339)
私有构建:
特殊构建: