08658f7bdd
- aggiunta gestione deposito dati chiave di protezione in uso.
88 lines
2.8 KiB
C++
88 lines
2.8 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2013-2013
|
|
//----------------------------------------------------------------------------
|
|
// File : GetModuleVer.cpp Data : 10.12.13 Versione : 1.4a4
|
|
// Contenuto : Funzione che restituisce la versione del modulo richiesto.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 10.12.13 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "\EgtDev\Include\EGnGetModuleVer.h"
|
|
#include "\EgtDev\Include\EgtStringConverter.h"
|
|
#include "\EgtDev\Include\EGnStringUtils.h"
|
|
#include <Shlwapi.h>
|
|
|
|
using namespace std ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
GetModuleVersion( HINSTANCE hModule, string& sVer)
|
|
{
|
|
// imposto versione a non trovata
|
|
sVer = "0.0_0" ;
|
|
|
|
// trovo nome del file dato l'hInstance
|
|
wchar_t szFileName[_MAX_PATH] ;
|
|
::GetModuleFileNameW( hModule, szFileName, _MAX_PATH) ;
|
|
|
|
// mi faccio dare il buffer delle informazioni dal file
|
|
DWORD dwNULL ;
|
|
DWORD dwSize = ::GetFileVersionInfoSizeW( szFileName, &dwNULL) ;
|
|
if ( dwSize == 0)
|
|
return false ;
|
|
LPVOID lpData = malloc( size_t( dwSize));
|
|
if ( lpData == nullptr)
|
|
return false ;
|
|
GetFileVersionInfoW( szFileName, dwNULL, dwSize, lpData) ;
|
|
|
|
// Chiedo le info standard
|
|
bool bOk = false ;
|
|
LPVOID lpUsefulData ;
|
|
UINT dwUsefulSize ;
|
|
if ( ::VerQueryValueW( lpData, L"\\", &lpUsefulData, &dwUsefulSize)) {
|
|
VS_FIXEDFILEINFO* pvsInfo = (VS_FIXEDFILEINFO*) lpUsefulData ;
|
|
int nMajVer = pvsInfo->dwFileVersionMS >> 16 ;
|
|
int nMinVer = pvsInfo->dwFileVersionMS % 0x10000 ;
|
|
char cChar = (char) ( (pvsInfo->dwFileVersionLS >> 16) + 96) ;
|
|
int nSub = pvsInfo->dwFileVersionLS % 0x10000 ;
|
|
sVer = ToString( nMajVer) + "." + ToString( nMinVer) + cChar + ToString( nSub) ;
|
|
bOk = true ;
|
|
}
|
|
|
|
// disalloco il buffer
|
|
free( lpData) ;
|
|
|
|
return bOk ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
GetModuleDirectory( HINSTANCE hModule, string& sDir)
|
|
{
|
|
// trovo path del file dato l'hInstance
|
|
wchar_t szFileNameW[_MAX_PATH] ;
|
|
if ( ::GetModuleFileNameW( hModule, szFileNameW, _MAX_PATH) == 0)
|
|
return false ;
|
|
|
|
// elimino nome.estensione del file
|
|
PathRemoveFileSpecW( szFileNameW) ;
|
|
|
|
// assegno valore di ritorno
|
|
sDir = LPSTR( WtoA( szFileNameW)) ;
|
|
|
|
return true ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
SetCurrentDirectory( const string& sDir)
|
|
{
|
|
return ( SetCurrentDirectoryW( stringtoW( sDir)) != 0) ;
|
|
}
|