"Fusilado" del setup1.bas :
Declare Function VerInstallFile Lib "VERSION.DLL" Alias "VerInstallFileA" (ByVal Flags&, ByVal SrcName$, ByVal DestName$, ByVal SrcDir$, ByVal DestDir$, ByVal CurrDir As Any, ByVal TmpName$, lpTmpFileLen&) As Long
Declare Function GetFileVersionInfoSize Lib "VERSION.DLL" Alias "GetFileVersionInfoSizeA" (ByVal strFilename As String, lVerHandle As Long) As Long
Declare Function GetFileVersionInfo Lib "VERSION.DLL" Alias "GetFileVersionInfoA" (ByVal strFilename As String, ByVal lVerHandle As Long, ByVal lcbSize As Long, lpvData As Byte) As Long
Declare Function VerQueryValue Lib "VERSION.DLL" Alias "VerQueryValueA" (lpvVerData As Byte, ByVal lpszSubBlock As String, lplpBuf As Long, lpcb As Long) As Long
Declare Sub lmemcpy Lib "VB5STKIT.DLL" (strDest As Any, ByVal strSrc As Any, ByVal lBytes As Long)
Type VERINFO 'FIXEDFILEINFO de versión
strPad1 As Long 'Estructura para la versión
strPad2 As Long 'Estructura para la firma
nMSLo As Integer 'Palabra inferior de la versión en # MS DWord
nMSHi As Integer 'Palabra superior de la versión en # MS DWord
nLSLo As Integer 'Palabra inferior de la versión en # LS DWord
nLSHi As Integer 'Palabra superior de la versión en # LS DWord
strPad3(1 To 16) As Byte 'Salta 16 bytes en la estructura de VERINFO
FileOS As Long 'Información sobre el SO de destino para este archivo.
strPad4(1 To 16) As Byte 'Estructura del resto de VERINFO (16 bytes)
End Type
Function GetFileVerStruct(ByVal strFilename As String, sVerInfo As VERINFO) As Boolean
Const strFIXEDFILEINFO$ = "\"
Dim lVerSize As Long
Dim lVerHandle As Long
Dim lpBufPtr As Long
Dim byteVerData() As Byte
Dim fFoundVer As Boolean
GetFileVerStruct = False
fFoundVer = False
'Obtiene el tamaño de la información de versión del archivo, asigna un búfer y obtiene
'la información de versión. Después, consultamos el archivo Fixed por partes, donde está
'la versión interna del archivo que usa la llamada VerInstallFile de la API. Después se
'copia la información del archivo en una estructura VERINFO.
'
lVerSize = GetFileVersionInfoSize(strFilename, lVerHandle)
If lVerSize > 0 Then
ReDim byteVerData(lVerSize)
If GetFileVersionInfo(strFilename, lVerHandle, lVerSize, byteVerData(0)) <> 0 Then ' (Pasa la matriz byteVerData al primer elemento mediante referencia)
If VerQueryValue(byteVerData(0), strFIXEDFILEINFO & "", lpBufPtr, lVerSize) <> 0 Then
lmemcpy sVerInfo, lpBufPtr, lVerSize
fFoundVer = True
GetFileVerStruct = True
End If
End If
End If
End Function
Para saber la version :
Dim Version As VERINFO
If GetFileVerStruct("MiFichero.exe", Version) Then
MsgBox Version.nMSHi & "." & Version.nMSLo & "." & Version.nLSHi & "." & Version.nLSLo
End If
At 09:11 16/11/99 -0500, you wrote:
>Alguno de Uds. sabe como puedo conocer el número de Version de un EXE, o
de una DLL sin necesidad de crear uhna instancia de el?? > >Agradezco
cualquier aporte > >Saludos,
>--------------------------------------------------------------------------
>Fernando De la Cruz Cabello >Cáritas del Perú - Calle Omicrón No. 492
Callao >Telef. 511-4645503 fax 511-4642595 >http://www.caritas.org.pe
>E_mail: fernando.delacruz@caritas.org.pe
>--------------------------------------------------------------------------