如何得到其它程序的文件信息,比如版本号,公司名,内部文件名
ncucf 2006-01-24 11:56:40 我用GetFileVersionInfo总是不成功,代码如下
char info[512];
if(GetFileVersionInfo(_T("c:\\adji.exe"),NULL,512,info))
{
UINT cbTranslate=512;
TCHAR SubBlock[512];
TCHAR lpBuffer[512];
UINT dwBytes=512;
//if(VerQueryValue(info, TEXT("\\StringFileInfo\\040904E4\\CompanyName"), (LPVOID*)&SubBlock, &dwBytes))
VerQueryValue(info,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
// Read the file description for each language and code page.
HRESULT hr;
for( int i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
hr = StringCchPrintf(SubBlock, 50,
TEXT("\\StringFileInfo\\%04x%04x\\CompanyName"),
(STRSAFE_LPWSTR)lpTranslate[i].wLanguage,
(STRSAFE_LPWSTR)lpTranslate[i].wCodePage);
if (FAILED(hr))
{
// TODO: write error handler.
}
if(VerQueryValue(info,SubBlock , (LPVOID*)&SubBlock, &dwBytes))
MessageBox((LPCTSTR)SubBlock);
}
function::GetMyLastError();
}
按照msdn上的试了n次,都没用!不知道大家怎么获得一个exe文件的信息,比如公司、版本号、内部文件名之类的!