#include <Winver.h>#pragma comment(lib,"Version.lib")
typedef struct tagVERSION_DATA { WORD wMajor; WORD wMinor; WORD wRevision; WORD wBuild;} VERSION_DATA, *PVERSION_DATA;
/*/brief GetLibraryVersion, 获取资源文件中的版本信息/param hModule, exe,DLL 句柄/return 返回*/VERSION_DATA GetLibraryVersion(HMODULE hModule){ VERSION_DATA Version; TCHAR szFullPath[MAX_PATH]; DWORD dwVerInfoSize = 0; DWORD dwVerHnd; VS_FIXEDFILEINFO *pFileInfo = NULL; GetModuleFileName(hModule, szFullPath, sizeof(szFullPath)); dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd); if (dwVerInfoSize) { // If we were able to get the information, process it: HANDLE hMem; LPVOID lpvMem; unsigned int uInfoSize = 0; hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize); lpvMem = GlobalLock(hMem); GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem); ::VerQueryValue(lpvMem, (LPTSTR)_T("//"), (void**)&pFileInfo, &uInfoSize); // Product version from the FILEVERSION of the version info resource Version.wMajor = HIWORD(pFileInfo->dwProductVersionMS); Version.wMinor = LOWORD(pFileInfo->dwProductVersionMS); Version.wRevision = HIWORD(pFileInfo->dwProductVersionLS); Version.wBuild = LOWORD(pFileInfo->dwProductVersionLS); GlobalUnlock(hMem); GlobalFree(hMem); } return Version;}