tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
646
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Frido Frido ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    20
    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,
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    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;
     
    }
     

  3. #3
    Frido Frido ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    20
    Herzlichen Dank!

    Aber hat sich bereits erledigt
    Hab mir klasse von CodeProjekt ausgeliehen, die das für mich macht.

    mfg Frido
     

Ähnliche Themen

  1. VB.net - Versionsnummer einer DLL-Datei auslesen
    Von harvi im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 06.07.07, 15:24
  2. [VB] Versionsnummer herausfinden
    Von virus-2k im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 13.10.06, 08:47
  3. Antworten: 7
    Letzter Beitrag: 12.04.05, 15:18
  4. Versionsnummer
    Von Specialguest@home im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 14.06.04, 22:20
  5. Versionsnummer auslesen
    Von Dos_Kanonos im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 17.05.04, 09:19