get version off dll

Just starting out? Need help? Post your questions and find answers here.
supercdfr
User
User
Posts: 54
Joined: Tue Mar 16, 2010 9:28 pm

get version off dll

Post by supercdfr »

hello,

i find some old way to have the version of dll or exe :

http://www.purebasic.fr/english/viewtop ... 85&p=66018

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
    
    Debug ( GetFileVersion("c:\windows\notepad.exe") )
but it doesn't work on a w10 x64.
i try with a 5.20, but it's not working either.

Anyone have a solution ?
infratec
Always Here
Always Here
Posts: 7623
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: get version off dll

Post by infratec »

PB runs now as unicode application so...

Code: Select all

*GFI_Size = GetFunction(0, "GetFileVersionInfoSizeW")
*GFI_Info = GetFunction(0, "GetFileVersionInfoW")
*GFI_Value = GetFunction(0, "VerQueryValueW")
Bernd
User avatar
Sicro
Enthusiast
Enthusiast
Posts: 560
Joined: Wed Jun 25, 2014 5:25 pm
Location: Germany
Contact:

Re: get version off dll

Post by Sicro »

http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb

Code: Select all

File$ = "Path to your dll file"
Debug GetFileVersionInfoString(File$, #FVI_FileVersion)
Debug GetFileVersionInfoString(File$, #FVI_ProductVersion)
OR

http://www.rsbasic.de/aktualisierung/wi ... eln%202.pb

Code: Select all

File$ = "Path to your dll file"
Debug FileInfo::GetFileVersion(File)
Debug FileInfo::GetProductVersion(File)
Debug FileInfo::GetFixedFileVersion(File)
Debug FileInfo::GetFixedProductVersion(File)
Image
Why OpenSource should have a license :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (syntax color scheme) :: RegEx-Engine (compiles RegExes to NFA/DFA)
Manjaro Xfce x64 (Main system) :: Windows 10 Home (VirtualBox) :: Newest PureBasic version
Post Reply