Resource Definition File GETVER.RC
Application code GETVER.BAS
[This message has been edited by Egbert Zijlema (edited August 23, 2000).]
Code:
#include "D:\PBDLL60\WINAPI\RESOURCE.H" VS_VERSION_INFO VERSIONINFO FILEVERSION 1, 1, 0, 0 PRODUCTVERSION 1, 0, 0, 0 FILEOS VOS_WINDOWS32 FILETYPE VFT_APP BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "041304E4" // &H0413 = LANG_ID Dutch, &H04E4 = charset ANSI BEGIN VALUE "CompanyName", "Egbert Zijlema\0" VALUE "FileDescription", "Application to test version resource file\0" VALUE "FileVersion", "1.01\0" VALUE "InternalName", "GetVer for Windows\0" VALUE "OriginalFilename", "GETVER.EXE\0" VALUE "LegalCopyright", "Copyright \251 2000: Egbert Zijlema\0" VALUE "ProductName", "GetVer\0" VALUE "ProductVersion", "1\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x413, 1252 // tell application it's Dutch + ANSI END END
Code:
#COMPILE EXE #INCLUDE "WIN32API.INC" #RESOURCE "VERSION.PBR" FUNCTION FileVersion() AS STRING LOCAL nSize AS LONG, ret AS LONG, dummy AS LONG LOCAL buff AS STRING, LangID AS STRING, temp AS STRING LOCAL szPathName AS ASCIIZ * %MAX_PATH, svPtr AS ASCIIZ PTR, LangPtr AS LONG PTR ' Get valid path name for running application and store it in szPathName ret = GetModuleFileName(BYVAL 0&, szPathName, %MAX_PATH) IF ret = 0 THEN EXIT FUNCTION ' find version info's length and create appropriate buffer nSize = GetFileVersionInfoSize(szPathName, dummy) IF nSize = 0 THEN EXIT FUNCTION buff = SPACE$(nSize) ' store info in buffer ret = GetFileVersionInfo(szPathName, dummy, nSize, BYVAL STRPTR(buff)) IF ret = 0 THEN EXIT FUNCTION ' get language information and convert it (via two 4-digit hex strings) to a string ' in this example the result will be "041304E4" ret = VerQueryValue(BYVAL STRPTR(buff), "\VarFileInfo\Translation", LangPtr, nSize) If ret = 0 THEN LangID = "040904E4" ' try Am. English/ANSI ELSE LangID = HEX$(LOWRD(@LangPtr), 4) + HEX$(HIWRD(@LangPtr), 4) END IF ' finally get the information from the resource ret = VerQueryValue(BYVAL STRPTR(buff), _ "\StringFileInfo\" + LangID + "\OriginalFileName", svPtr, nSize) If ret = 0 THEN EXIT FUNCTION temp = @svPtr ret = VerQueryValue(BYVAL STRPTR(buff), _ "\StringFileInfo\" + LangID + "\FileVersion", svPtr, nSize) If ret = 0 THEN EXIT FUNCTION temp = temp + CHR$(32) + @svPtr ret = VerQueryValue(BYVAL STRPTR(buff), _ "\StringFileInfo\" + LangID + "\LegalCopyright", svPtr, nSize) If ret = 0 THEN EXIT FUNCTION FUNCTION = temp + $CRLF + @svPtr END FUNCTION FUNCTION PBMain() AS LONG MSGBOX FileVersion, 64, "Test GetVer" END FUNCTION
[This message has been edited by Egbert Zijlema (edited August 23, 2000).]