const AnsiString InfoStr[10] = {"CompanyName", "FileDescription",
"FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks",
"OriginalFileName", "ProductName", "ProductVersion", "Comments"};
char *ExeName = Application->ExeName.c_str();
DWORD n = GetFileVersionInfoSize(ExeName, &n);
if (n > 0)
{
char *pBuf = (char *) malloc(n);
AnsiString temp = "VersionInfoSize = ";
Memo1->Lines->Add(temp + IntToStr(n));
GetFileVersionInfo(ExeName, 0, n, pBuf);
for (int i = 1; i < 5; i++)
{
LPVOID *pValue;
unsigned int* Len;
if (VerQueryValue(pBuf,
("StringFileInfo\\080403a8\\"+InfoStr[i]).c_str() ,pValue,Len))
Memo1->Lines->Add(InfoStr[i] + " = " + pValue);
{
pValue;
};
}
free(pBuf);
}
else
Memo1->Lines->Add("No version information found");help里面的例程有误:char *pValue;编译不能通过。
改成LPVOID *pValue;运行到VerQueryValue时出错。
"FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks",
"OriginalFileName", "ProductName", "ProductVersion", "Comments"};
char *ExeName = Application->ExeName.c_str();
DWORD n = GetFileVersionInfoSize(ExeName, &n);
if (n > 0)
{
char *pBuf = (char *) malloc(n);
AnsiString temp = "VersionInfoSize = ";
Memo1->Lines->Add(temp + IntToStr(n));
GetFileVersionInfo(ExeName, 0, n, pBuf);
for (int i = 1; i < 5; i++)
{
LPVOID *pValue;
unsigned int* Len;
if (VerQueryValue(pBuf,
("StringFileInfo\\080403a8\\"+InfoStr[i]).c_str() ,pValue,Len))
Memo1->Lines->Add(InfoStr[i] + " = " + pValue);
{
pValue;
};
}
free(pBuf);
}
else
Memo1->Lines->Add("No version information found");help里面的例程有误:char *pValue;编译不能通过。
改成LPVOID *pValue;运行到VerQueryValue时出错。
这里是D区呀,呵呵:)
LPVOID *pValue = new LPVOID;应该可以解决吧。
"FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks",
"OriginalFileName", "ProductName", "ProductVersion", "Comments"};
char *ExeName = Application->ExeName.c_str();
DWORD n = GetFileVersionInfoSize(ExeName, &n);
if (n > 0)
{
char *pBuf = (char *) malloc(n);
AnsiString temp = "VersionInfoSize = ";
Memo1->Lines->Add(temp + IntToStr(n));
GetFileVersionInfo(ExeName, 0, n, pBuf);
for (int i = 1; i < 5; i++)
{
void **pValue;
unsigned int Len;
if (VerQueryValue(pBuf,
("StringFileInfo\\080403a8\\"+InfoStr[i]).c_str() ,pValue,&Len))
Memo1->Lines->Add(InfoStr[i] + " = " + (Char*)*pValue);
{
pValue;
};
}
free(pBuf);
}
else
Memo1->Lines->Add("No version information found");