The information in this article applies to:
- Microsoft Access versions 7.0, 97
SUMMARY
Advanced: Requires expert coding, interoperability, and multiuser skills.
This article contains 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 demonstrates a sample user-defined function that you
can use 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 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 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 add the following code to the
command button's OnClick 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
- 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
- Click the command button to see the version displayed in a message box.
REFERENCES
For more information about declaring APIs, search the Help Index for
"Declare Statement," or ask the Microsoft Access 97 Office Assistant.