VB and VBA Users Source Code: Get a list of file version details for OCX, EXE and DLL files
[
Home
|
Contents
|
Search
|
Reply
| Previous | Next ]
VB/VBA Source Code
Get a list of file version details for OCX, EXE and DLL files
By:
Andrew Baker
Email (spam proof):
Email the originator of this post
Date:
Monday, February 26, 2001
Hits:
673
Category:
Windows API
Article:
Listed below are routines which returns all the file version information for a specified file. '--------------GET VERSION INFO API----------------------- Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long 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 'Purpose : To obtain the file version info of a DLL, OCX, EXE etc. 'Inputs : sFileName The path and name of the file to return the version info 'Outputs : Returns empty if an error occurs, else returns a zero based 1d string ' array of file version information. 'Author : Andrew Baker 'Date : 09/10/2000 23:39 'Notes : 'Revisions : Function FileVersionArray(sFileName As String) As Variant Dim llen As Long, lHandle As Long Dim lIndex As Long, lStartPos As Long Dim sBuffer As String, asVerHeaders() As String Const csSep As String = "" On Error Resume Next 'Get size of the version info block llen = GetFileVersionInfoSize(sFileName, lHandle) If llen Then 'Create a string Buffer to store results sBuffer = Space$(llen) 'Get version information If GetFileVersionInfo(sFileName, lHandle, llen, ByVal StrPtr(sBuffer)) = 0 Then 'Error occurred Exit Function End If '-------Extract version information from Buffer asVerHeaders() = Split("CompanyName;FileDescription;FileVersion;InternalName;LegalCopyright;OriginalFilename;ProductName;ProductVersion;Comments;LegalTrademarks;PrivateBuild;SpecialBuild;Language", ";") 'Loop over array checking for the position of the version headers For lIndex = 0 To UBound(asVerHeaders) - 1 lStartPos = InStr(1, sBuffer, csSep & asVerHeaders(lIndex)) If lStartPos Then 'Move past header lStartPos = lStartPos + Len(asVerHeaders(lIndex)) + 1 If Mid$(sBuffer, lStartPos + 1, 1) = vbNullChar Then 'Move past null lStartPos = lStartPos + 2 ElseIf Mid$(sBuffer, lStartPos, 1) = vbNullChar Then lStartPos = lStartPos + 1 End If asVerHeaders(lIndex) = asVerHeaders(lIndex) & ": " & Mid$(sBuffer, lStartPos, InStr(lStartPos, sBuffer, vbNullChar) - lStartPos) Else asVerHeaders(lIndex) = asVerHeaders(lIndex) & ": Not specified" End If Next 'Get Language details lStartPos = InStr(sBuffer, csSep & "StringFileInfo") If lStartPos Then lStartPos = InStr(lStartPos + Len("StringFileInfo"), sBuffer, csSep) + 1 asVerHeaders(UBound(asVerHeaders)) = asVerHeaders(lIndex) & ": " & zGetLanguageName(Mid$(sBuffer, lStartPos, InStr(lStartPos, sBuffer, vbNullChar) - lStartPos)) End If 'Return results FileVersionArray = asVerHeaders() End If End Function Private Function zGetLanguageName(sValue As String) As String Select Case UCase$(Left$(sValue, 4)) Case "0436" zGetLanguageName = "Afrikaans" Case "041C" zGetLanguageName = "Albanian" Case "3801" zGetLanguageName = "Arabic - U.A.E." Case "3C01" zGetLanguageName = "Arabic - Bahrain" Case "1401" zGetLanguageName = "Arabic - Algeria" Case "0C01" zGetLanguageName = "Arabic - Egypt" Case "0801" zGetLanguageName = "Arabic - Iraq" Case "2C01" zGetLanguageName = "Arabic - Jordan" Case "3401" zGetLanguageName = "Arabic - Kuwait" Case "3001" zGetLanguageName = "Arabic - Lebanon" Case "1001" zGetLanguageName = "Arabic - Libya" Case "1801" zGetLanguageName = "Arabic - Morocco" Case "2001" zGetLanguageName = "Arabic - Oman" Case "4001" zGetLanguageName = "Arabic - Qatar" Case "0401" zGetLanguageName = "Arabic - Saudia Arabia" Case "2801" zGetLanguageName = "Arabic - Syria" Case "1C01" zGetLanguageName = "Arabic - Tunisia" Case "2401" zGetLanguageName = "Arabic - Yemen" Case "042D" zGetLanguageName = "Basque" Case "0423" zGetLanguageName = "Belarusian" Case "0402" zGetLanguageName = "Bulgarian" Case "0403" zGetLanguageName = "Catalan" Case "0804" zGetLanguageName = "Chinese - PRC" Case "0C04" zGetLanguageName = "Chinese - Hong Kong S.A.R." Case "1004" zGetLanguageName = "Chinese - Singapore" Case "0404" zGetLanguageName = "Chinese - Taiwan" Case "041A" zGetLanguageName = "Croatian" Case "0405" zGetLanguageName = "Czech" Case "0406" zGetLanguageName = "Danish" Case "0413" zGetLanguageName = "Dutch" Case "0813" zGetLanguageName = "Dutch - Belgium" Case "0C09" zGetLanguageName = "English - Australia" Case "2809" zGetLanguageName = "English - Belize" Case "1009" zGetLanguageName = "English - Canada" Case "1809" zGetLanguageName = "English - Ireland" Case "2009" zGetLanguageName = "English - Jamaica" Case "1409" zGetLanguageName = "English - New Zealand" Case "1C09" zGetLanguageName = "English - South Africa" Case "2C09" zGetLanguageName = "English - Trinidad" Case "0809" zGetLanguageName = "English - United Kingdom" Case "0409" zGetLanguageName = "English - United States" Case "0425" zGetLanguageName = "Estonian" Case "0429" zGetLanguageName = "Farsi" Case "040B" zGetLanguageName = "Finnish" Case "0438" zGetLanguageName = "Faeroese" Case "040C" zGetLanguageName = "French - Standard" Case "080C" zGetLanguageName = "French - Belgium" Case "0C0C" zGetLanguageName = "French - Canada" Case "140C" zGetLanguageName = "French - Luxembourg" Case "100C" zGetLanguageName = "French - Switzerland" Case "043C" zGetLanguageName = "Gaelic - Scotland" Case "0407" zGetLanguageName = "German - Standard" Case "0C07" zGetLanguageName = "German - Austrian" Case "1407" zGetLanguageName = "German - Lichtenstein" Case "1007" zGetLanguageName = "German - Luxembourg" Case "0807" zGetLanguageName = "German - Switzerland" Case "0408" zGetLanguageName = "Greek" Case "040D" zGetLanguageName = "Hebrew" Case "0439" zGetLanguageName = "Hindi" Case "040E" zGetLanguageName = "Hungarian" Case "040F" zGetLanguageName = "Icelandic" Case "0421" zGetLanguageName = "Indonesian" Case "0410" zGetLanguageName = "Italian - Standard" Case "0810" zGetLanguageName = "Italian - Switzerland" Case "0411" zGetLanguageName = "Japanese" Case "0412" zGetLanguageName = "Korean" Case "0426" zGetLanguageName = "Latvian" Case "0427" zGetLanguageName = "Lithuanian" Case "042F" zGetLanguageName = "Macedonian" Case "043E" zGetLanguageName = "Malay - Malaysia" Case "043A" zGetLanguageName = "Maltese" Case "0414" zGetLanguageName = "Norwegian - Bokmål" Case "0415" zGetLanguageName = "Polish" Case "0816" zGetLanguageName = "Portuguese - Standard" Case "0416" zGetLanguageName = "Portuguese - Brazil" Case "0417" zGetLanguageName = "Raeto-Romance" Case "0418" zGetLanguageName = "Romanian" Case "0818" zGetLanguageName = "Romanian - Moldova" Case "0419" zGetLanguageName = "Russian" Case "0819" zGetLanguageName = "Russian - Moldova" Case "0C1A" zGetLanguageName = "Serbian - Cyrillic" Case "0432" zGetLanguageName = "Setsuana" Case "0424" zGetLanguageName = "Slovenian" Case "041B" zGetLanguageName = "Slovak" Case "042E" zGetLanguageName = "Sorbian" Case "040A" zGetLanguageName = "Spanish - Standard" Case "2C0A" zGetLanguageName = "Spanish - Argentina" Case "400A" zGetLanguageName = "Spanish - Bolivia" Case "340A" zGetLanguageName = "Spanish - Chile" Case "240A" zGetLanguageName = "Spanish - Columbia" Case "140A" zGetLanguageName = "Spanish - Costa Rica" Case "1C0A" zGetLanguageName = "Spanish - Dominican Republic" Case "300A" zGetLanguageName = "Spanish - Ecuador" Case "100A" zGetLanguageName = "Spanish - Guatemala" Case "480A" zGetLanguageName = "Spanish - Honduras" Case "080A" zGetLanguageName = "Spanish - Mexico" Case "4C0A" zGetLanguageName = "Spanish - Nicaragua" Case "180A" zGetLanguageName = "Spanish - Panama" Case "280A" zGetLanguageName = "Spanish - Peru" Case "500A" zGetLanguageName = "Spanish - Puerto Rico" Case "3C0A" zGetLanguageName = "Spanish - Paraguay" Case "440A" zGetLanguageName = "Spanish - El Salvador" Case "380A" zGetLanguageName = "Spanish - Uruguay" Case "200A" zGetLanguageName = "Spanish - Venezuela" Case "0430" zGetLanguageName = "Sutu" Case "041D" zGetLanguageName = "Swedish" Case "081D" zGetLanguageName = "Swedish - Finland" Case "041E" zGetLanguageName = "Thai" Case "041F" zGetLanguageName = "Turkish" Case "0431" zGetLanguageName = "Tsonga" Case "0422" zGetLanguageName = "Ukranian" Case "0420" zGetLanguageName = "Urdu - Pakistan" Case "042A" zGetLanguageName = "Vietnamese" Case "0434" zGetLanguageName = "Xhosa" Case "043D" zGetLanguageName = "Yiddish" Case "0435" zGetLanguageName = "Zulu" End Select End Function 'Demonstration routine Sub Example() Dim avVersionInfo As Variant, vInfo As Variant avVersionInfo = FileVersionArray("C:\WINNT\system32\comctl32.ocx") For Each vInfo In avVersionInfo Debug.Print CStr(vInfo) Next End Sub
Terms and Conditions
Support this site
Download a trial version of the Excel Workbook Rebuilder