'=========================================================================== ' Subject: VERSION INFORMATION UTILITY Date: 01-13-99 (20:12) ' Author: Dave Navarro, Jr. Code: PBCC ' Origin: dave@powerbasic.com Packet: PBCC.ABC '=========================================================================== $RESOURCE "VERINFO.PBR" $INCLUDE "WIN32API.INC" FUNCTION MakeVerStr(BYVAL VerNumMS AS LONG, BYVAL VerNumLS AS LONG) AS STRING LOCAL Major AS INTEGER LOCAL Minor AS INTEGER LOCAL temp AS STRING Major = VerNumMS \ &H10000 Minor = VerNumMS AND &HFFFF& temp = FORMAT$(Major) & "." IF Minor < 10 THEN temp = temp & "0" END IF temp = temp & FORMAT$(Minor) IF VerNumLS THEN temp = temp & " Build" & STR$(VerNumLS) END IF FUNCTION = temp END FUNCTION FUNCTION PbMain() AS LONG LOCAL file AS ASCIIZ * 256 LOCAL info AS ASCIIZ * 64 LOCAL t AS ASCIIZ PTR LOCAL ffi AS VS_FIXEDFILEINFO PTR file = COMMAND$ IF LEN(file) = 0 THEN STDOUT "VERINFO.EXE - Display version information" STDOUT "Copyright (c) 1998 PowerBASIC, Inc." STDOUT "" STDOUT "Usage: VERINFO filename" FUNCTION = 1 EXIT FUNCTION END IF IF LEN(DIR$(file)) = 0 THEN STDOUT "Error! " & file & " not found." EXIT FUNCTION END IF STDOUT "Version info for " & file ' ** Allocate a buffer for the version info data size& = GetFileVersionInfoSize(file, z&) IF size& = 0 THEN STDOUT "No version resource available." EXIT FUNCTION END IF Buffer$ = SPACE$(size&) ' ** Get the version info data into the buffer GetFileVersionInfo file, z&, size&, BYVAL STRPTR(Buffer$) ' ** Read the company name from the buffer VerQueryValue BYVAL STRPTR(Buffer$), "\StringFileInfo\040904E4\CompanyName", t, z& ' ** Display it on the screen STDOUT " Company name: " & @t ' ** Read the copyright from the buffer VerQueryValue BYVAL STRPTR(Buffer$), "\StringFileInfo\040904E4\LegalCopyright", t, z& ' ** Display it on the screen STDOUT " Legal Copyright: " & @t ' ** Read the VS_FIXEDFILEINFO info VerQueryValue BYVAL STRPTR(Buffer$), "\", ffi, z& ' Now build the output report STDOUT " Product version: " & MakeVerStr(@ffi.dwProductVersionMS, @ffi.dwProductVersionLS) END FUNCTION