vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Dateisystem29.07.01
VerQueryValue-Funktion

Diese Funktion extrahiert aus einer über der GetFileVersionInfo.html-Funktion erhaltenen Versionsinformationen alle wichtigen Daten.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  5.245 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Deklaration:

    Declare Function VerQueryValue Lib "version.dll" _
      Alias "VerQueryValueA" ( _
      pBlock As Any, _
      ByVal lpSubBlock As String, _
      lplpBuffer As Long, _
      puLen As Long) As Long

    Beschreibung:
    Diese Funktion extrahiert aus einer über der GetFileVersionInfo-Funktion erhaltenen Versionsinformationen alle wichtigen Daten.

    Parameter:
    pBlockDaten-Block mit den Versionsinformationen einer Datei (kann mittels der GetFileVersionInfo-Funktion ermittelt werden.
    lpSubBlockErwartet einen String der den Teilbereich angibt, welcher aus den Versionsinformationen extrahiert werden soll. Übergeben Sie für eine komplette VS_FIXEDFILEINFO-Struktur einen Backslash "\".
    lplpBufferPointer zu den extrahierten Versionsinformationen. Bei übergebenen Backslash ist dies ein Pointer zu einer VS_FIXEDFILEINFO-Struktur.
    puLenGibt die Größe des Puffers zurück.

    Rückgabewert:
    War der Funktionsaufruf erfolgreich, so wird ein Wert ungleich 0 zurückgegeben, andernfalls ist der Rückgabewert 0.


    Beispiel:

    Private Declare Function GetFileVersionInfo Lib "version.dll" _
      Alias "GetFileVersionInfoA" ( _
      ByVal lptstrFilename As String, _
      ByVal dwHandle As Long, _
      ByVal dwLen As Long, _
      lpData As Any) As Long
     
    Private Declare Function GetFileVersionInfoSize Lib "version.dll" _
      Alias "GetFileVersionInfoSizeA" ( _
      ByVal lptstrFilename As String, _
      lpdwHandle As Long) As Long
     
    Private Declare Function VerQueryValue Lib "version.dll" _
      Alias "VerQueryValueA" ( _
      pBlock As Any, _
      ByVal lpSubBlock As String, _
      lplpBuffer As Long, _
      puLen As Long) As Long
     
    Private Declare Function lstrcpy Lib "kernel32.dll" _
      Alias "lstrcpyA" ( _
      ByVal lpString1 As Any, _
      ByVal lpString2 As Any) As Long
     
    Private Declare Sub MoveMemory Lib "kernel32" _
      Alias "RtlMoveMemory" ( _
      dest As Any, _
      ByVal Source As Long, _
      ByVal length As Long)
     
    Private Type VS_FIXEDFILEINFO
      dwSignature As Long
      dwStrucVersionl As Integer
      dwStrucVersionh As Integer
      dwFileVersionMSl As Integer
      dwFileVersionMSh As Integer
      dwFileVersionLSl As Integer
      dwFileVersionLSh As Integer
      dwProductVersionMSl As Integer
      dwProductVersionMSh As Integer
      dwProductVersionLSl As Integer
      dwProductVersionLSh As Integer
      dwFileFlagsMask As Long
      dwFileFlags As Long
      dwFileOS As Long
      dwFileType As Long
      dwFileSubtype As Long
      dwFileDateMS As Long
      dwFileDateLS As Long
    End Type
     
    Public Type FileVInfo
      FileName As String
      FileType As String
      FileVersion As String
      FilePath As String
    End Type
     
    Private Const VFT_APP = &H1
    Private Const VFT_DLL = &H2
    Private Const VFT_DRV = &H3
    Private Const VFT_VXD = &H5
    Private Const VFT_FONT = &H4&
    Private Const VFT_STATIC_LIB = &H7&
    Private Const VFT_UNKNOWN = &H0&
    ' VersionsInformationen auslesen
    Public Function GetFileVersionInformation(ByVal _
      FilePath As String) As FileVInfo
     
      Dim PufferLänge As Long
      Dim Puffer() As Byte
      Dim Pointer As Long
      Dim PointerLänge As Long
      Dim VInfo As VS_FIXEDFILEINFO
     
      ' Püfferlänge ermitteln
      PufferLänge = GetFileVersionInfoSize(FilePath, 0&)
     
      ' Keine Versions-Info?
      If PufferLänge < 1 Then GoTo Go_Out
     
      ' Puffer größe ändern
      ReDim Puffer(PufferLänge)
     
      ' Versions-Info ermitteln
      GetFileVersionInfo FilePath, 0&, PufferLänge, Puffer(0)
     
      ' Pointer VersionsInfo
      VerQueryValue Puffer(0), "\", Pointer, PointerLänge
     
      ' VersionsInfo in Struktur VInfo kopieren
      MoveMemory VInfo, Pointer, Len(VInfo)
     
    Go_Out:
      ' Struktur füllen
      With GetFileVersionInformation
        .FilePath = FilePath
        .FileName = Right$(FilePath, Len(FilePath) - _
          InStrRev(FilePath, "\"))
        Select Case VInfo.dwFileType
          Case VFT_APP
            .FileType = "Anwendung"
          Case VFT_DLL
            .FileType = "Dynamic Link Library (DLL)"
          Case VFT_DRV
            .FileType = "Geräte Trieber"
          Case VFT_VXD
            .FileType = "Virtueller Geräte Treiber"
          Case VFT_FONT
            .FileType = "Schriftart"
          Case VFT_STATIC_LIB
            .FileType = "Static Library"
          Case VFT_UNKNOWN
            .FileType = "Unbekannt"
        End Select
        .FileVersion = Format$(VInfo.dwFileVersionMSh) & "." & _
          Format$(VInfo.dwFileVersionMSl) & "." & _
          Format$(VInfo.dwFileVersionLSh) & "." & _
          Format$(VInfo.dwFileVersionLSl)
      End With
    End Function

    Starten Sie ein neues Projekt und fügen Sie das MS-CommonDialog Steuerelement hinzu. Plazieren Sie auf der Form ein CommonDialg-Element, ein Command-Button, sowie vier Bezeichner-Elemente (Label1 - Label4).

    Private Sub Command1_Click()
      Dim FVI As FileVInfo
      On Error GoTo Err_Cancel
     
      With CommonDialog1
        ' Common Dialog konfigurieren
        .Flags = cdlOFNFileMustExist
        .CancelError = True
        .DefaultExt = App.Path
        .DialogTitle = "Datei Öffnen"
        .Filter = "*.exe - Anwendungen|*.exe|" + _
          "*.dll - Dynamic Link Library|*.dll|" + _
          "*.drv - Geräte Treiber|*.drv|" + _
          "*.vxd - Virtueller Geräte Treiber|*.vxd|" + _
          "*.* - Alle Dateien|*.*"
        .ShowOpen
     
        ' Datei-Informationen ermitteln
        FVI = GetFileVersionInformation(.FileName)
      End With
     
      ' Label-Felder mit Informationen füllen
      With FVI
        Label1.Caption = "Datei Name: " & .FileName
        Label2.Caption = "Datei Pfad: " & .FilePath
        Label3.Caption = "Datei Typ: " & .FileType
        Label4.Caption = "Datei Version: " & .FileVersion
      End With
      Exit Sub
     
    Err_Cancel:
    End Sub

    Diese Seite wurde bereits 5.245 mal aufgerufen.

    nach obenzurück
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.

    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel