Newsgroup: it.comp.lang.visual-basic
Titolo: Conoscere la versione di un exe

... mi pare di aver letto che è possibile interrogare un file exe compilato 
con VB6 per conoscerne la versione.
Vi risulta ??
Pippo



Qualcosa si vede se clicchi col pulsante destro del mouse e vai in proprietà >>
versione.
Però bisogna che al momento della compilazione siano stati usati i campi.
--
ciao
  Stefano

 ha scritto nel messaggio 
news:46966c68$0$16031$5fc...@news.tiscali.it...

Da codice è possibile sapere la versione dell'attuale EXE :
 LbVersione = "Versione " + CStr(App.Major) + "." + CStr(App.Minor) + "." + 
CStr(App.Revision)
oppure da codice è possibile ricavare la versione in un certo EXE :
Public Function RicavaVersione(Nome As String) As String
    Dim sVerInfo As VERINFO
    Dim T As String
     RicavaVersione = GetFileVersion(Nome)
End Function
Private Declare Function GetFileVersionInfoSize Lib "VERSION.DLL" Alias 
"GetFileVersionInfoSizeA" (ByVal strFilename As String, lVerHandle As Long) 
As Long
Private 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
Private Declare Function VerQueryValue Lib "VERSION.DLL" Alias 
"VerQueryValueA" (lpvVerData As Byte, ByVal lpszSubBlock As String, lplpBuf 
As Long, lpcb As Long) As Long
Private Declare Sub lmemcpy Lib "KERNEL32" Alias "RtlMoveMemory" (strDest As 
Any, ByVal strSrc As Any, ByVal nBytes As Long)
Private Const gstrDECIMAL$ = "."
Private Const gstrNULL$ = ""                             'Stringa vuota
Private Const gstrEXT_DEP$ = "DEP"
Private Const gintNOVERINFO% = 32767                     'Flag che indica 
l'assenza di informazioni sulla versione
Private Const gstrSEP_EXT$ = "."                         ' Carattere di 
separazione delle estensioni dei nomi di file.
Private Const gstrSEP_DIR$ = "\"                         ' Carattere di 
separazione delle directory.
Private Const gstrSEP_DIRALT$ = "/"                      ' Carattere di 
separazione alternativo delle directory.
Type VERINFO                                            'Versione 
FIXEDFILEINFO
    strPad1 As Long                                     'Versione
    strPad2 As Long                                     'Firma
    nMSLo As Integer                                    'Parola bassa della 
DWord contenente il numero di versione MS
    nMSHi As Integer                                    'Parola alta della 
DWord contenente il numero di versione MS
    nLSLo As Integer                                    'Parola bassa della 
DWord contenente il numero di versione LS
    nLSHi As Integer                                    'Parola alta della 
DWord contenente il numero di versione LS
    strPad3(1 To 16) As Byte                            'Ignora una parte 
della struttura VERINFO (16 byte)
    FileOS As Long                                      'Informazioni sul 
sistema operativo a cui questo file è destinato.
    strPad4(1 To 16) As Byte                            'Resto della 
struttura VERINFO (16 byte)
End Type
Function GetFileVersion(ByVal strFilename As String, Optional ByVal 
fIsRemoteServerSupportFile) As String
    Dim sVerInfo As VERINFO
    Dim strVer As String
    On Error GoTo GFVError
    If IsMissing(fIsRemoteServerSupportFile) Then
        fIsRemoteServerSupportFile = False
    End If
    'Legge la versione del file da una struttura VERINFO e quindi crea una
    'stringa di versione utilizzando gli elementi appropriati.
    If GetFileVerStruct(strFilename, sVerInfo, fIsRemoteServerSupportFile) = 
True Then
        strVer = Format$(sVerInfo.nMSHi) & gstrDECIMAL & 
Format$(sVerInfo.nMSLo) & gstrDECIMAL
        strVer = strVer & Format$(sVerInfo.nLSHi) & gstrDECIMAL & 
Format$(sVerInfo.nLSLo)
        GetFileVersion = strVer
    Else
        GetFileVersion = gstrNULL
    End If
    Exit Function
 GFVError:
    GetFileVersion = gstrNULL
    Err = 0
End Function
Ciao
Ugo
(
www.lalpinistavirtuale.it
) 


Altro modo:
Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    ExeFilePath = "C:\Programmi\......."
    Debug.Print fso.GetFileVersion(ExeFilePath)
-- 
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 
Se posso permettermi, sconsiglierei l'uso del FSO, perchè spesso fa a 
pugni con gli antivirus.
Se l'applicazione deve avere un discreto numero di utilizzatori non è 
cosa da poco avere rogne con gli antivirus.
bye

 cosa da poco avere rogne con gli antivirus.
Verissimo, non fa mai male ricordarlo.
