Page 1 of 1

Get File Version (Windows)

Posted: Tue Aug 03, 2004 8:11 pm
by ebs
Code updated For 5.20+

I didn't see this when I searched the forum or the Code Archive, so here is a routine to get the version of a file:

Code: Select all

    ;- get version of specified file as string
    Procedure.s GetFileVersion(FileSpec.s)


      VerBuffer.VS_FIXEDFILEINFO

      FileVersion.s
     
      If OpenLibrary(0, "version.dll")
        *GFI_Size = GetFunction(0, "GetFileVersionInfoSizeA")
        *GFI_Info = GetFunction(0, "GetFileVersionInfoA")
        *GFI_Value = GetFunction(0, "VerQueryValueA")
       
        If *GFI_Size And *GFI_Info And *GFI_Value
          ; get size of version information buffer
          BufferLen = CallFunctionFast(*GFI_Size, @FileSpec, @Dummy)
          If BufferLen
            ; allocate buffer and get version information
            *Buffer = AllocateMemory(BufferLen)
            CallFunctionFast(*GFI_Info, @FileSpec, 0, BufferLen, *Buffer)
            ; find file version and copy into structure
            CallFunctionFast(*GFI_Value, *Buffer, @"\", @VerPointer, @VerBufferLen)
            CopyMemory(VerPointer, VerBuffer, VerBufferLen)
            ; build file version string "x.x.x.x"
            FileVersion = Str((VerBuffer\dwFileVersionMS & $FFFF0000) >> 16) + "." + Str(VerBuffer\dwFileVersionMS & $0000FFFF) + "." + Str((VerBuffer\dwFileVersionLS & $FFFF0000) >> 16) + "." + Str(VerBuffer\dwFileVersionLS & $0000FFFF)
          EndIf
        EndIf

        CloseLibrary(0)
      EndIf

      ; return file version string
      ProcedureReturn FileVersion
    EndProcedure

Posted: Mon Nov 01, 2004 1:45 pm
by bingo
any way to find the language of any dll ? :roll: