Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Bestand versie achterhalen in VB

Anoniem
Babbelz
6 antwoorden
  • Bedoel je binnen je programma de versie ophalen van je exe bestand zodat je die in je aboutscherm kunt laten zien? Dan is dit het eenvoudigst.

    code:

    lblVersie.Caption = "Versie " & App.Major & "." & App.Minor & App.Revision

    ——————
    Met vriendelijke groeten,
    Laurens

    "Leven is meervoud van lef"

  • Hallo Allen,

    Weet iemand hoe je de versie van een (VB) EXE bestand kan achterhalen vanuit VB6?

    Alvast bedankt.

  • Laurens,

    Alsvast bedankt, maar ik heb toch nog een probleem.

    Als ik deze code 1 op 1 copy dan komt VB in de Regel (Van het aanroepen):

    If GetVersionInfo(FI) Then

    Met de volgende Error:

    ByRef argument type mismatch, met FI geselecteerd……

    Doe ik wat fout??????? (Het bovenste stuk staat netjes in een gloed nieuwe module)

  • Nee dit bedoel ik niet helemaal…..

    Ik ben nu een programma aan het schrijven die gebruik maat van DDE koppelingen met andere EXE programma's.

    Als ik nu in het About screen alle versies van alle modules wil laten zien, moet ik eerst alle modules opstarten, vanuit het about screen een "request" voor versie nummer doen en de module stuurt dan zijn versie terug naar het about screen.

    Groot nadeel dus dat ik eerst alle modules moet starten voor het versie nummer, terwijl je dit ook gewoon uit het gecompileerde EXE bestand kan halen (Rechter muis knop, Properties, Version).

    Dit wil ik dus vanuit het about screen doen…

    Ik hoop dat dit duidelijker is….

  • [Edit]
    Vorige post met lap code verwijderd, zorgt alleen maar voor onduidelijkheid
    [/Edit]
    Sorry, ik ben wat haastig geweest.
    Dit zou moeten werken:
    In onderstaand stuk voor de module is alleen een declaratie van cBackSlash toegevoegd en een aanroep van logging verwijderd. Je hoeft dus niet opnieuw het hele stuk te copy-pasten.

    code:

    Public Function GetVersionInfo(FI As FileInfoText) As Boolean
    Dim lngRetCode As Long
    Dim lngDummy As Long
    Dim lngBufferLen As Long
    Dim lngVerPointer As Long
    Dim lngVerbufferLen As Long
    Dim sBuffer() As Byte
    Dim udtVerBuffer As VS_FIXEDFILEINFO
    Const cBackSlash As String = ""
    'Deze funktie leest de info uit een bestand die je in windows ook met de rechtermuisknop->Eigenschappen->Versie
    'op kunt vragen.
    'Dit alles op basis van de info uit Dan Appleman's Win32 API programming guide.

    On Error GoTo ERROR_HANDLER

    If Right(FI.strDirectory, 1) <> cBackSlash Then
    FI.strDirectory = FI.strDirectory & cBackSlash
    End If

    FI.strFullFilename = FI.strDirectory & FI.strFilename

    '*** Eerst de lengte van de versioninfo ophalen ****
    lngBufferLen = GetFileVersionInfoSize(FI.strFullFilename, lngDummy)
    If lngBufferLen < 1 Then
    ' Call Logging("Geen Version Info beschikbaar in " & FI.strFilename & "!", pstrLogPath)
    GetVersionInfo = False
    Exit Function
    End If

    '**** Info in udtVerBuffer struct proppen ****
    ReDim sBuffer(lngBufferLen)
    lngRetCode = GetFileVersionInfo(FI.strFullFilename, 0&, lngBufferLen, sBuffer(0))
    lngRetCode = VerQueryValue(sBuffer(0), "", lngVerPointer, lngVerbufferLen)
    MoveMemory udtVerBuffer, lngVerPointer, Len(udtVerBuffer)

    '**** Bepaal Structure Version number - NOT USED ****
    FI.strStrucVer = Format$(udtVerBuffer.dwstrStrucVersionh) & "." & Format$(udtVerBuffer.dwstrStrucVersionl)

    '**** Bepaal File Version number ****
    FI.strFileVer = Format$(udtVerBuffer.dwstrFileVersionMSh) & "." & Format$(udtVerBuffer.dwstrFileVersionMSl) & "." & Format$(udtVerBuffer.dwstrFileVersionLSh) & "." & Format$(udtVerBuffer.dwstrFileVersionLSl)

    '**** Bepaal Product Version number ****
    FI.strProdVer = Format$(udtVerBuffer.dwProductVersionMSh) & "." & Format$(udtVerBuffer.dwProductVersionMSl) & "." & Format$(udtVerBuffer.dwProductVersionLSh) & "." & Format$(udtVerBuffer.dwProductVersionLSl)

    '**** Bepaal Boolean attributes van File ****
    FI.strFileFlags = ""
    If udtVerBuffer.dwstrFileFlags And VS_FF_DEBUG Then FI.strFileFlags = "Debug "
    If udtVerBuffer.dwstrFileFlags And VS_FF_PRERELEASE Then FI.strFileFlags = FI.strFileFlags & "PreRel "
    If udtVerBuffer.dwstrFileFlags And VS_FF_PATCHED Then FI.strFileFlags = FI.strFileFlags & "Patched "
    If udtVerBuffer.dwstrFileFlags And VS_FF_PRIVATEBUILD Then FI.strFileFlags = FI.strFileFlags & "Private "
    If udtVerBuffer.dwstrFileFlags And VS_FF_SPECIALBUILD Then FI.strFileFlags = FI.strFileFlags & "Special "
    If udtVerBuffer.dwstrFileFlags And VFT2_UNKNOWN Then FI.strFileFlags = FI.strFileFlags + "Unknown "

    '**** Bepaal OS waar bestand voor geschreven is ****
    Select Case udtVerBuffer.dwstrFileOS
    Case VOS_DOS_WINDOWS16
    FI.strFileOS = "DOS-Win16"
    Case VOS_DOS_WINDOWS32
    FI.strFileOS = "DOS-Win32"
    Case VOS_OS216_PM16
    FI.strFileOS = "OS/2-16 PM-16"
    Case VOS_OS232_PM32
    FI.strFileOS = "OS/2-16 PM-32"
    Case VOS_NT_WINDOWS32
    FI.strFileOS = "NT-Win32"
    Case Else
    FI.strFileOS = "Unknown"
    End Select

    Select Case udtVerBuffer.dwstrFileType
    Case VFT_APP
    FI.strFileType = "App"
    Case VFT_DLL

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.