Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
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;
}