这是我自己写的一个小工程里的函数,用来获取工程exe自身的文件版本号:
[color=#0000D0]void[/color] [color=#0000D0]__fastcall[/color] MyGetAppVersion([color=#0000D0]LPSTR[/color] lpFileVer)
{
[color=#0000D0]DWORD[/color] dwHandle;
[color=#0000D0]UINT[/color] unCurLen;
String strFileName = Application->ExeName;
[color=#0000D0]DWORD[/color] dwVerLen = [b][color=#000080]GetFileVersionInfoSize[/color][/b](strFileName.c_str(), &dwHandle);
[color=#FF0000]strcpy[/color](lpFileVer, [color=#808080]””[/color]);
[color=#0000D0]if[/color](dwVerLen)
{
[color=#0000D0]LPSTR[/color] lpData = [color=#0000D0]new[/color] [color=#0000D0]char[/color][dwVerLen];
[color=#0000D0]if[/color]([b][color=#000080]GetFileVersionInfo[/color][/b](strFileName.c_str(), 0, dwVerLen, lpData))
{
PVSFixedFileInfo pvsFixFileInfo;
[b][color=#000080]VerQueryValue[/color][/b](lpData, [color=#808080]”\\”[/color], ([color=#0000D0]void[/color] **)&pvsFixFileInfo, &unCurLen);
[color=#0000D0]DWORD[/color] dwFileType = pvsFixFileInfo->dwFileType;
[color=#0000D0]if[/color]((dwFileType == VFT_APP) || (dwFileType == VFT_DLL)
|| (dwFileType == VFT_VXD) || (dwFileType == VFT_STATIC_LIB))
{
[color=#0000D0]PDWORD[/color] pdwBuffer;
[color=#0000D0]UINT[/color] unVerLen;
String strLanguageCode;
[color=#008000]// 获取文件语言 [/color]
[color=#0000D0]if[/color]([b][color=#000080]VerQueryValue[/color][/b](lpData, TEXT([color=#808080]”\\VarFileInfo\\Translation”[/color]),
([color=#0000D0]void[/color] **)&pdwBuffer, &unVerLen))
{
[color=#0000D0]WORD[/color] wLangID = [color=#b000b0]LOWORD[/color](([color=#0000D0]DWORD[/color])(*pdwBuffer));
[color=#0000D0]WORD[/color] wLangSubID = [color=#b000b0]HIWORD[/color](([color=#0000D0]DWORD[/color])(*pdwBuffer));
strLanguageCode = String(IntToHex(wLangID, 4)) +
String(IntToHex(wLangSubID, 4));
}
[color=#0000D0]PCHAR[/color] pcBuf;
String strTemp = [color=#808080]”\\StringFileInfo\\”[/color] + strLanguageCode +
String([color=#808080]”\\FileVersion”[/color]);
[color=#0000D0]if[/color]([b][color=#000080]VerQueryValue[/color][/b](lpData, strTemp.c_str(), ([color=#0000D0]void[/color] **)&pcBuf, &unVerLen))
[color=#FF0000]strcpy[/color](lpFileVer, pcBuf);
}
}
[color=#0000D0]delete[/color][] lpData;
}
}
[color=#008000]// 使用举例 [/color]
[color=#0000D0]char[/color] szBuf[64];
MyGetAppVersion(szBuf);
Label1->Caption = String([color=#808080]”版本: “[/color]) + String(szBuf);
本代码由xTiNt自动着色 http://kbadboy.yeah.net
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。