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

Last reviewed: August 29, 1997
Article ID: Q147155
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.

  1. Open the sample database Northwind.mdb.

  2. 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&)
    
    

  3. 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
    
    

  4. Save the module and create a new form.

  5. Add a text box to the form and set its Name property to FName.

  6. 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
    
    

  7. 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
    

  8. 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.


Additional query words: api file
Keywords : kbprg PgmApi PgmHowTo PgmFilM
Version : 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: August 29, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.