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
|
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "version.lib")
//----------------------------------------------------------------------
int GetProductVersion(const char *szFile, char *szProductVer, size_t len)
{
void *pbuf;
UINT buflen;
int result = 0;
VS_FIXEDFILEINFO *pffi;
DWORD dwSize, dwHandle = 0;
if(!(dwSize = GetFileVersionInfoSize(szFile, &dwHandle)))
return result;
if(!(pbuf = HeapAlloc(GetProcessHeap(), 0, dwSize)))
return result;
if(GetFileVersionInfo(szFile, 0, dwSize, pbuf))
if(VerQueryValue(pbuf, "\\", (void **)&pffi, &buflen))
result = _snprintf(szProductVer, len, "%d.%d.%d.%d", HIWORD(pffi->dwProductVersionMS), LOWORD(pffi->dwProductVersionMS), HIWORD(pffi->dwProductVersionLS), LOWORD(pffi->dwProductVersionLS));
HeapFree(GetProcessHeap(), 0, pbuf);
return result;
}
//----------------------------------------------------------------------
int main(void)
{
char szProductVersion[64];
if(GetProductVersion("Notepad.exe", szProductVersion, 64))
printf("Notepad.exe\n\t%s\n", szProductVersion);
if(GetProductVersion("Calc.exe", szProductVersion, 64))
printf("Calc.exe\n\t%s\n", szProductVersion);
return 0;
} |
Partager