Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

How to create version resource

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • How to create version resource

    Resource Definition File GETVER.RC
    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
    Application code GETVER.BAS
    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).]

    Egbert Zijlema, journalist and programmer (zijlema at basicguru dot eu)
    http://zijlema.basicguru.eu
    *** Opinions expressed here are not necessarily untrue ***
Working...
X