ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
646
646
EMPFEHLEN
-
Weis jemand wie ich die Versionsnummer aus der Versionstabelle (Visual Studio)
auslesen kann?
Ich habe es mit GetFileVersionInfo probiert, was aber nicht so funktioniert wie ich das möchte.
vielleicht weis ja jemand von euch wie das geht,
-
Ist ein bisschen kompliziert, aber hier ein Schnipsel. Der geht von einer 4 stelligen Versionsnummer aus (z.Bsp: 1.2.3.4):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
bool CWinUtils::GetVersionInfo( HINSTANCE hInstance, DWORD dwResourceID, DWORD& dwMajor, DWORD& dwMinor, DWORD& dwBuildNumber, DWORD& dwSubBuild ) { HRSRC hrSrc = FindResource( hInstance, MAKEINTRESOURCE( dwResourceID ), RT_VERSION ); if ( hrSrc == NULL ) { return false; } HGLOBAL hGlobal = LoadResource( hInstance, hrSrc ); BYTE* pBlock = (BYTE*)GlobalLock( hGlobal ); DWORD dwSize = SizeofResource( hInstance, hrSrc ); BYTE* pData = new BYTE[dwSize * 2]; memset( pData, 0, dwSize * 2 ); memcpy( pData, pBlock, dwSize ); struct LANGANDCODEPAGE { WORD wLanguage; WORD wCodePage; } * lpTranslate; UINT cbTranslate; // Read the list of languages and code pages. VerQueryValue( pData, TEXT("\\VarFileInfo\\Translation"), (LPVOID*)&lpTranslate, &cbTranslate ); // Read the file description for each language and code page. char SubBlock[50]; for( size_t i = 0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ ) { wsprintf( SubBlock, TEXT("\\StringFileInfo\\%04x%04x\\FileVersion"), lpTranslate[i].wLanguage, lpTranslate[i].wCodePage); // Retrieve file description for language and code page "i". LPVOID pBuffer = NULL; DWORD dwLength = 0; VerQueryValue( pData, SubBlock, &pBuffer, (PUINT)&dwLength ); std::string strVersion = (char*)pBuffer; if ( strVersion.find( '.' ) != std::string::npos ) { dwMajor = atoi( strVersion.substr( 0, strVersion.find( '.' ) ).c_str() ); strVersion = strVersion.substr( strVersion.find( '.' ) + 1 ); } if ( strVersion.find( '.' ) != std::string::npos ) { dwMinor = atoi( strVersion.substr( 0, strVersion.find( '.' ) ).c_str() ); strVersion = strVersion.substr( strVersion.find( '.' ) + 1 ); } if ( strVersion.find( '.' ) != std::string::npos ) { dwBuildNumber = atoi( strVersion.substr( 0, strVersion.find( '.' ) ).c_str() ); strVersion = strVersion.substr( strVersion.find( '.' ) + 1 ); } if ( !strVersion.empty() ) { dwSubBuild = atoi( strVersion.c_str() ); } } delete[] pData; GlobalUnlock( hGlobal ); FreeResource( hGlobal ); return true; }
-
Herzlichen Dank!
Aber hat sich bereits erledigt
Hab mir klasse von CodeProjekt ausgeliehen, die das für mich macht.
mfg Frido
Ähnliche Themen
-
VB.net - Versionsnummer einer DLL-Datei auslesen
Von harvi im Forum .NET CaféAntworten: 2Letzter Beitrag: 06.07.07, 15:24 -
[VB] Versionsnummer herausfinden
Von virus-2k im Forum .NET CaféAntworten: 1Letzter Beitrag: 13.10.06, 08:47 -
Versionsnummer von exe- und dll-Dateien auslesen
Von plonk im Forum JavaAntworten: 7Letzter Beitrag: 12.04.05, 15:18 -
Versionsnummer
Von Specialguest@home im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 14.06.04, 22:20 -
Versionsnummer auslesen
Von Dos_Kanonos im Forum C/C++Antworten: 2Letzter Beitrag: 17.05.04, 09:19





Zitieren
Login






