Параметр szVer будет содержать строку
// Параметр szVer будет содержать строку вида: 5.00.1878.1
BOOL GetlmageHlpVersion ( DWORD & dwMS, DWORD & dwLS)
{
return( GetlnMemoryFileVersion ( _T ( "DBGHELP.DLL"),
dwMS ,
dwLS ) ) ;
}
BOOL GetDbgHelpVersion ( DWORD & dwMS, DWORD & dwLS)
{
return( GetlnMemoryFileVersion ( __T ( "DBGHELP.DLL"),
dwMS ,
dwLS ) ) ;
}
// Возвращает версию DLL-файлов, читающих PDB.
BOOL GetPDBReaderVersion ( DWORD & dwMS, DWORD & dwLS)
{
// Первым проверяется файл MSDBI.DLL.
if ( TRUE == GetlnMemoryFileVersion ( _T ( "MSDBI.DLL"),
dwMS ,
dwLS ) )
{
return ( TRUE);
}
else if.( TRUE == GetlnMemoryFileVersion ( _T ( "MSPDB60.DLL"),
dwMS
dwLS ) )
{
return ( TRUE);
}
// Теперь пришла очередь проверить MSPDB50.DLL.
return ( GetlnMemoryFileVersion ( _T ( "MSPDB50.DLL"),
dwMS
dwLS ) ) ;
}
// Рабочая функция, используемая двумя предшествующими функциями.
BOOL GetlnMemoryFileVersion ( LPCTSTR szFile,
DWORD & dwMS ,
DWORD & dwLS )
{
HMODULE hlnstlH = GetModuleHandle ( szFile);
// Получить полное имя файла загруженной версии
TCHAR sz!mageHlp[ MAX_PATH ];
GetModuleFileName ( hlnst-IH, szImageHlp, MAX_PATH);
dwMS = 0;
dwLS = 0;
// Получить размер информации о версии.
DWORD dwVerlnfoHandle;
DWORD dwVerSize;
dwVerSize = GetFileVersionlnfoSize ( szImageHlp ,
SdwVerlnfoHandle );
if ( 0 == dwVerSize)
{
return ( FALSE);
}
// Получили размер информации о версии, теперь получим
// саму информацию.
LPVOID IpData = (LPVOID)new TCHAR [ dwVerSize ];
if ( FALSE == GetFileVersionlnfo ( szImageHlp ,
dwVerlnfoHandle , dwVerSize , IpData ))
{
delete [] IpData; return ( FALSE);
}
VS_FIXEDFILEINFO * IpVerlnfo;
UINT uiLen;
BOOL bRet = VerQueryValue ( IpData ,
_T ( "\\")
(LPVOID*)SlpVerlnfo, &uiLen ) ;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий