Microsoft KB Archive/147155

= ACC: Sample Function to Retrieve File Version Information (95/97) =

Article ID: 147155

Article Last Modified on 1/19/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q147155



Advanced: Requires expert coding, interoperability, and multiuser skills.



SUMMARY
This article shows you how to create a sample user-defined Visual Basic for Applications function that you can use to check the file version information stored within most files.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.



MORE INFORMATION
Most files used by Windows-based applications contain a version stamp. You can check this version stamp by using Windows API calls within Visual Basic for Applications.

The following example shows you how to create a sample user-defined function to check the version number (if available) of a file.

You may have some Microsoft Windows API functions defined in an existing Microsoft Access library; therefore, your declarations may be duplicates. If you receive a duplicate procedure name error message, remove or comment out the declarations statement in your code.

 Open the sample database Northwind.mdb.  Create a new module, and then add the following code to the Declarations section: Type FileInfo wLength           As Integer wValueLength      As Integer szKey             As String * 16 dwSignature       As Long dwStrucVersion    As Long dwFileVersionMS   As Long dwFileVersionLS   As Long End Type

' NOTE: The following Declare statements are case sensitive.

Declare Function GetFileVersionInfo& Lib "Version" _ Alias "GetFileVersionInfoA" (ByVal FileName$, _    ByVal dwHandle&, ByVal cbBuff&, ByVal lpvData$) Declare Function GetFileVersionInfoSize& Lib "Version" Alias _ "GetFileVersionInfoSizeA" (ByVal FileName$, dwHandle&) Declare Sub hmemcpy Lib "Kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, hpvSource As Any, ByVal cbBytes&)   Add the following two functions to the module: Function LOWORD(x As Long) As Integer LOWORD = x And &HFFFF& ' Low 16 bits contain Minor revision number. End Function

Function HIWORD(x As Long) As Integer HIWORD = x \ &HFFFF& ' High 16 bits contain Major revision number. End Function  Save the module, and then create a new form. Add a text box to the form, and set its Name property to FName.  Add a command button to the form, and set the OnClick property of the command button to the following event procedure: Dim x As FileInfo Dim FileVer As String Dim FileName As String Dim dwHandle&, BufSize&, lpvData$, R&

'*** Get Version Information If Available **** FileVer = "" FileName = Me![FName] BufSize& = GetFileVersionInfoSize(FileName, dwHandle&) If BufSize& = 0 Then MsgBox "Invalid File Name or no Version information available" Exit Sub End If lpvData$ = Space$(BufSize&) R& = GetFileVersionInfo(FileName, dwHandle&, BufSize&, lpvData$) hmemcpy x, ByVal lpvData$, Len(x)

'**** Parse File Version Number **** FileVer = Trim$(Str$(HIWORD(x.dwFileVersionMS))) + "." FileVer = FileVer + Trim$(Str$(LOWORD(x.dwFileVersionMS))) + "." FileVer = FileVer + Trim$(Str$(HIWORD(x.dwFileVersionLS))) + "." FileVer = FileVer + Trim$(Str$(LOWORD(x.dwFileVersionLS)))

MsgBox FileVer, 64, "Version of " & FileName </li> To use the function, view the form in Form view and type a valid path and file name in the Fname text box. The following lines are examples of valid paths and file names:

C:\Windows\System\User32.dll

C:\Msoffice\Access\Msaccess.exe

</li> Click the command button to see the version displayed in a message box.</li></ol>

<div class="references_section">