想得到EXE文件的版本,可是总是乱码?
类库 2004-03-06 03:48:55 代码如下:
DWORD dwVerInfoSize;
unsigned int cbTranslate = 0;
int ilanguage = 0;
TCHAR tValPath[256];
char FileInfo[MAX_PATH];
char *pVerData;
TListItem *Item;
AnsiString TempString ;
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
VersionListView->Items->Clear();
dwVerInfoSize = GetFileVersionInfoSize(lpszFileName,NULL);
pVerData = new char[dwVerInfoSize];
if(GetFileVersionInfo(lpszFileName, 0, dwVerInfoSize, pVerData))
{
VerQueryValue(pVerData,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
wsprintf( tValPath,
TEXT("\\StringFileInfo\\%04x%04x\\"),
lpTranslate[ilanguage].wLanguage,
lpTranslate[ilanguage].wCodePage);
TempString = tValPath;
if(VerQueryValue(pVerData,
AnsiString(TempString+"FileDescription").c_str(),
(LPVOID *)&FileInfo,
&cbTranslate))
{
Item = VersionListView->Items->Add();
Item->Caption = "FileDescription";
Item->SubItems->Add(FileInfo);
}
不知道哪里出问题了,请高手指点一下!