Get File Version in your code

来源:互联网 发布:拟态防御 知乎 编辑:程序博客网 时间:2024/05/16 04:42
 
//////////////////////////////////////////////////////////////////         File: version.cpp//  Description: Sample code for getting version info//      Created: 2008-1-4//       Author: Ken Zhang//       E-Mail: cpp.china@hotmail.com/////////////////////////////////////////////////////////////////*    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;}
原创粉丝点击