Try this:
Code:'Submitted on: 4/13/1999 'By: Riaan Aspeling 'Level: Not Given 'User Rating: By 5 Users 'Compatibility:VB 5.0/6.0 'Description: Retrieve the version of a file (EXE/DLL etc). Option Explicit 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 VerQueryValue Lib "Version.dll" _ Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock _ As String, lplpBuffer As Any, puLen As Long) As Long Private Declare Sub MoveMemory Lib "kernel32" _ Alias "RtlMoveMemory" (dest As Any, ByVal Source As _ Long, ByVal Length As Long) Private Type VS_FIXEDFILEINFO dwSignature As Long dwStrucVersionl As Integer ' e.g. = &h0000 = 0 dwStrucVersionh As Integer ' e.g. = &h0042 = .42 dwFileVersionMSl As Integer ' e.g. = &h0003 = 3 dwFileVersionMSh As Integer ' e.g. = &h0075 = .75 dwFileVersionLSl As Integer ' e.g. = &h0000 = 0 dwFileVersionLSh As Integer ' e.g. = &h0031 = .31 dwProductVersionMSl As Integer ' e.g. = &h0003 = 3 dwProductVersionMSh As Integer ' e.g. = &h0010 = .1 dwProductVersionLSl As Integer ' e.g. = &h0000 = 0 dwProductVersionLSh As Integer ' e.g. = &h0031 = .31 dwFileFlagsMask As Long ' = &h3F for version "0.42" dwFileFlags As Long ' e.g. VFF_DEBUG or VFF_PRERELEASE dwFileOS As Long ' e.g. VOS_DOS_WINDOWS16 dwFileType As Long ' e.g. VFT_DRIVER dwFileSubtype As Long ' e.g. VFT2_DRV_KEYBOARD dwFileDateMS As Long ' e.g. 0 dwFileDateLS As Long ' e.g. 0 End Type Private Function CheckFileVersion(FilenameAndPath As Variant) As Variant On Error GoTo HandelCheckFileVersionError Dim lDummy As Long, lsize As Long, rc As Long Dim lVerbufferLen As Long, lVerPointer As Long Dim sBuffer() As Byte Dim udtVerBuffer As VS_FIXEDFILEINFO Dim ProdVer As String lsize = GetFileVersionInfoSize(FilenameAndPath, lDummy) If lsize < 1 Then Exit Function ReDim sBuffer(lsize) rc = GetFileVersionInfo(FilenameAndPath, 0&, lsize, sBuffer(0)) rc = VerQueryValue(sBuffer(0), "\", lVerPointer, lVerbufferLen) MoveMemory udtVerBuffer, lVerPointer, Len(udtVerBuffer) '**** Determine Product Version number * ' *** ProdVer = Format$(udtVerBuffer.dwProductVersionMSh) & "." & Format$(udtVerBuffer.dwProductVersionMSl) 'Full number: 'ProdVer = Format$(udtVerBuffer.dwProductVersionMSh) & "." & Format$(udtVerBuffer.dwProductVersionMSl) & "." & Format$(udtVerBuffer.dwFileVersionLSh) & Format$(udtVerBuffer.dwFileVersionLSl) CheckFileVersion = ProdVer Exit Function HandelCheckFileVersionError: CheckFileVersion = "N/A" Exit Function End Function Private Sub Command1_Click() Msgbox CheckFileVersion("C:\Windows\Notepad.exe") End Sub




Reply With Quote