Hallo !
seit dem es 32bit Betriebsysteme gibt können Dateien eine Erweiterte Datei-Informationen enthalten. Diese wird nicht in dem Lesbahren teil der Datei sondern zusammen mit Erstellungsdatum Änderungsdatum … gespeichert.
Kann mir zufällig jemand sagen wie ich diesen Bereich auslehsen und auch überschreiben kann.
Danke schonmal im Voraus !
Cu Stefan
Hallo Stefan,
ich habe Dir das Beispiel aus API-Guide kopiert …
Const VS\_FFI\_SIGNATURE = &HFEEF04BD
Const VS\_FFI\_STRUCVERSION = &H10000
Const VS\_FFI\_FILEFLAGSMASK = &H3F&
Const VS\_FF\_DEBUG = &H1
Const VS\_FF\_PRERELEASE = &H2
Const VS\_FF\_PATCHED = &H4
Const VS\_FF\_PRIVATEBUILD = &H8
Const VS\_FF\_INFOINFERRED = &H10
Const VS\_FF\_SPECIALBUILD = &H20
Const VOS\_UNKNOWN = &H0
Const VOS\_DOS = &H10000
Const VOS\_OS216 = &H20000
Const VOS\_OS232 = &H30000
Const VOS\_NT = &H40000
Const VOS\_\_BASE = &H0
Const VOS\_\_WINDOWS16 = &H1
Const VOS\_\_PM16 = &H2
Const VOS\_\_PM32 = &H3
Const VOS\_\_WINDOWS32 = &H4
Const VOS\_DOS\_WINDOWS16 = &H10001
Const VOS\_DOS\_WINDOWS32 = &H10004
Const VOS\_OS216\_PM16 = &H20002
Const VOS\_OS232\_PM32 = &H30003
Const VOS\_NT\_WINDOWS32 = &H40004
Const VFT\_UNKNOWN = &H0
Const VFT\_APP = &H1
Const VFT\_DLL = &H2
Const VFT\_DRV = &H3
Const VFT\_FONT = &H4
Const VFT\_VXD = &H5
Const VFT\_STATIC\_LIB = &H7
Const VFT2\_UNKNOWN = &H0
Const VFT2\_DRV\_PRINTER = &H1
Const VFT2\_DRV\_KEYBOARD = &H2
Const VFT2\_DRV\_LANGUAGE = &H3
Const VFT2\_DRV\_DISPLAY = &H4
Const VFT2\_DRV\_MOUSE = &H5
Const VFT2\_DRV\_NETWORK = &H6
Const VFT2\_DRV\_SYSTEM = &H7
Const VFT2\_DRV\_INSTALLABLE = &H8
Const VFT2\_DRV\_SOUND = &H9
Const VFT2\_DRV\_COMM = &HA
Private Type VS\_FIXEDFILEINFO
dwSignature As Long
dwStrucVersionl As Integer ' e.g. = &h0000 = 0
dwStrucVersionh As Integer ' e.g. = &h0042 = .42
dwFileVersionMSl As Integer ' e.g. = &h0003 = 3
dwFileVersionMSh As Integer ' e.g. = &h0075 = .75
dwFileVersionLSl As Integer ' e.g. = &h0000 = 0
dwFileVersionLSh As Integer ' e.g. = &h0031 = .31
dwProductVersionMSl As Integer ' e.g. = &h0003 = 3
dwProductVersionMSh As Integer ' e.g. = &h0010 = .1
dwProductVersionLSl As Integer ' e.g. = &h0000 = 0
dwProductVersionLSh As Integer ' e.g. = &h0031 = .31
dwFileFlagsMask As Long ' = &h3F for version "0.42"
dwFileFlags As Long ' e.g. VFF\_DEBUG Or VFF\_PRERELEASE
dwFileOS As Long ' e.g. VOS\_DOS\_WINDOWS16
dwFileType As Long ' e.g. VFT\_DRIVER
dwFileSubtype As Long ' e.g. VFT2\_DRV\_KEYBOARD
dwFileDateMS As Long ' e.g. 0
dwFileDateLS As Long ' e.g. 0
End Type
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 Any, puLen As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal length As Long)
Dim Filename As String, Directory As String, FullFileName As String
Dim StrucVer As String, FileVer As String, ProdVer As String
Dim FileFlags As String, FileOS As String, FileType As String, FileSubType As String
Private Sub DisplayVerInfo()
Dim rc As Long, lDummy As Long, sBuffer() As Byte
Dim lBufferLen As Long, lVerPointer As Long, udtVerBuffer As VS\_FIXEDFILEINFO
Dim lVerbufferLen As Long
'\*\*\* Get size \*\*\*\*
lBufferLen = GetFileVersionInfoSize(FullFileName, lDummy)
If lBufferLen MS Knowledge Base
'set the file
Filename = "kernel32.dll"
Directory = "c:\windows\system\"
FullFileName = Directory + Filename
'set graphics mode to persistent
Me.AutoRedraw = True
'retrieve the information
DisplayVerInfo
'show the results
Me.Print "Full filename: " + FullFileName
Me.Print "File version: " + FileVer
Me.Print "Product version: " + ProdVer
Me.Print "File flags: " + FileFlags
Me.Print "File OS: " + FileOS
Me.Print "File type: " + FileType + IIf(FileSubType = "", "", " (" + FileSubType + ")")
End Sub
viel Spaß damit. 
Gruß, Rainer
Danke Rainer
Habe mir den Code erst einmal in mein Programm gezogen und werde mal schauen ob ich damit zurecht komme.
Hatte bisher noch nicht mit DLL Dateien gearbeitet.
Cu Stefan
Hallo Stefan,
Habe mir den Code erst einmal in mein Programm gezogen und
werde mal schauen ob ich damit zurecht komme.
Hatte bisher noch nicht mit DLL Dateien gearbeitet.
das Beispiel macht wohl einiges mehr, als Du willst. Ich würde das erst mal in einem eigenen Projakt testen, nach und nach Teile auskommentieren, bis das übrig bleibt und funktioniert, was Du brauchst. Oft sind das dann nur noch wenige Zeilen.
Für das Verständnis ist aber so ein umfangreiches Projekt sinnvoll, wenn man es verstanden hat, kann man leichter einzelne Komponenten verwenden.
Gruß, Rainer