//**************************************************************************** // $Module type: Package // $Module name: FileVersion // $Author : Nils G. Svedmyr // Created : 2002-11-19 @ 17:48 // // Description : To get the version of a file with a version resource, // such as an .exe or .dll file. // // $Rev History: // 2002-11-19 Module header created //**************************************************************************** Type RdsVS_FIXEDFILEINFO Field RdsVS_FIXEDFILEINFO.dwSignature as DWord Field RdsVS_FIXEDFILEINFO.dwStrucVersion as DWord Field RdsVS_FIXEDFILEINFO.dwFileVersionMS as DWord Field RdsVS_FIXEDFILEINFO.dwFileVersionLS as DWord Field RdsVS_FIXEDFILEINFO.dwProductVersionMS as DWord Field RdsVS_FIXEDFILEINFO.dwProductVersionLS as DWord Field RdsVS_FIXEDFILEINFO.dwFileFlagsMask as DWord Field RdsVS_FIXEDFILEINFO.dwFileFlags as DWord Field RdsVS_FIXEDFILEINFO.dwFileOS as DWord Field RdsVS_FIXEDFILEINFO.dwFileType as DWord Field RdsVS_FIXEDFILEINFO.dwFileSubtype as DWord Field RdsVS_FIXEDFILEINFO.dwFileDateMS as DWord Field RdsVS_FIXEDFILEINFO.dwFileDateLS as DWord End_Type // RdsVS_FIXEDFILEINFO #IFNDEF Get_GetFileVersionInfoSize External_Function GetFileVersionInfoSize "GetFileVersionInfoSizeA" VERSION.DLL ; Pointer lptstrFilename ; Pointer lpdwHandle ; Returns DWord #ENDIF #IFNDEF Get_GetFileVersionInfo External_Function GetFileVersionInfo "GetFileVersionInfoA" VERSION.DLL ; Pointer lptstrFilename ; DWord dwHandle ; DWord dwLen ; Pointer lpData ; Returns Integer #ENDIF #IFNDEF Get_VerQueryValue External_Function VerQueryValue "VerQueryValueA" VERSION.DLL ; Pointer pBlock ; Pointer lpSubBlock ; Pointer lplpBuffer ; Pointer puLen ; Returns Integer #ENDIF Function FileVersionInfo Global String sFileName Returns String DWord dwHandle dwLen String sBuffer sSub sFileInfo sVersion Pointer pFileInfo pInfo Integer iLen iVer iHi iLow Move (Trim(sFileName)) To sFileName Move 0 To pInfo Move 0 To dwHandle Move 0 To iLen Move (GetFileVersionInfoSize(AddressOf(sFileName),AddressOf(dwHandle))) To dwLen If (dwLen <> 0) Begin Move (Repeat(Character(0),dwLen)) To sBuffer Move (GetFileVersionInfo(AddressOf(sFileName),dwHandle,dwLen,AddressOf(sBuffer))) To WindowIndex If (WindowIndex <> 0) Begin Move "\" To sSub ZeroType RdsVS_FIXEDFILEINFO To sFileInfo GetAddress Of sFileInfo To pFileInfo Move (VerQueryValue(AddressOf(sBuffer),AddressOf(sSub),AddressOf(pInfo),AddressOf(iLen))) To WindowIndex If (WindowIndex <> 0) Begin Move (CopyMemory(pFileInfo,pInfo,iLen)) To WindowIndex GetBuff From sFileInfo At RdsVS_FIXEDFILEINFO.dwFileVersionMS To iHi GetBuff From sFileInfo At RdsVS_FIXEDFILEINFO.dwFileVersionLS To iLow Move (String(Hi(iHi))+"."+String(Low(iHi))+"."+String(Hi(iLow))+"."+String(Low(iLow))) To sVersion Function_Return sVersion End // If (WindowIndex <> 0) Begin End // If (WindowIndex <> 0) Begin End // If (dwLen <> 0) Begin End_Function // FileVersionInfo