EgtGeneral 1.4a4 : Aggiunte funzioni GetModule*. Si usano solo string.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// 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\EgnStringConverter.h"
|
||||
#include "\EgtDev\Include\EgnStringUtils.h"
|
||||
#include <Shlwapi.h>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
GetModuleVersion( HINSTANCE hModule, string& sVer)
|
||||
{
|
||||
bool bOk ;
|
||||
wchar_t szFileName[_MAX_PATH] ;
|
||||
DWORD dwNULL ;
|
||||
DWORD dwSize ;
|
||||
UINT dwUsefulSize ;
|
||||
LPVOID lpData ;
|
||||
LPVOID lpUsefulData ;
|
||||
VS_FIXEDFILEINFO* pvsInfo ;
|
||||
|
||||
|
||||
// trovo nome del file dato l'hInstance
|
||||
::GetModuleFileNameW( hModule, szFileName, _MAX_PATH) ;
|
||||
|
||||
// mi faccio dare il buffer delle informazioni dal file
|
||||
dwSize = ::GetFileVersionInfoSizeW( szFileName, &dwNULL) ;
|
||||
lpData = malloc( size_t( dwSize));
|
||||
GetFileVersionInfoW( szFileName, dwNULL, dwSize, lpData) ;
|
||||
|
||||
// Chiedo le info standard
|
||||
if ( ::VerQueryValueW( lpData, L"\\", &lpUsefulData, &dwUsefulSize)) {
|
||||
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 ;
|
||||
}
|
||||
else {
|
||||
sVer = "0.0a0" ;
|
||||
bOk = false ;
|
||||
}
|
||||
|
||||
// disalloco il buffer
|
||||
free( lpData) ;
|
||||
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
GetModuleDirectory( HINSTANCE hModule, string& sDir)
|
||||
{
|
||||
wchar_t szFileNameW[_MAX_PATH] ;
|
||||
|
||||
|
||||
// trovo path del file dato l'hInstance
|
||||
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) ;
|
||||
}
|
||||
Reference in New Issue
Block a user