////////////////////////////////////////////////////////////// // // File: version.cpp // Description: Sample code for getting version info // Created: 2008-1-4 // Author: Ken Zhang // E-Mail: cpp.china@hotmail // ////////////////////////////////////////////////////////////// /* The following code shows how to get FILEINFO value from resource file. These WIN32 functions will be used: * GetFileVersionInfo * GetFileVersionInfoSize * VerQueryValue * GetModuleFileName */ #include <windows.h> #include <tchar.h> #include <string> #include <iostream> #pragma comment(lib, "version.lib") using namespace std; bool GetFileVersion(HMODULE hModule, WORD *pBuffer) { TCHAR fname[MAX_PATH]; VS_FIXEDFILEINFO *pVi; DWORD dwHandle; string str; if (::GetModuleFileName(hModule, fname, MAX_PATH)) { int size = GetFileVersionInfoSize(fname, &dwHandle); if (size > 0) { BYTE *buffer = new BYTE[size]; if (GetFileVersionInfo(fname, dwHandle, size, buffer)) { if (VerQueryValue(buffer, _T("\\"), (LPVOID *)&pVi, (PUINT)&size)) { pBuffer[0] = HIWORD(pVi->dwFileVersionMS); pBuffer[1] = LOWORD(pVi->dwFileVersionMS); pBuffer[2] = HIWORD(pVi->dwFileVersionLS); pBuffer[3] = LOWORD(pVi->dwFileVersionLS); delete buffer; return true; } } delete buffer; } } return false; } string GetFileVersion(HMODULE hModule) { string str; WORD buffer[4]; if (GetFileVersion(hModule, buffer)) { char str2[32]; for (int i = 0; i < sizeof(buffer)/sizeof(WORD); i++) { itoa(buffer[i], str2, 10); str += str2; if (i != sizeof(buffer)/sizeof(WORD) - 1) { str += "."; } } } return str; } void main() { cout << "Current version is: " << GetFileVersion(::GetModuleHandle(NULL)) << endl; } |
本文发布于:2024-09-21 17:42:28,感谢您对本站的认可!
本文链接:https://www.17tex.com/tex/3/380560.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |