Mam napisaną funkcję która pobiera mi info o exe-cu.
LPVOID lpStr1 = NULL, lpStr2 = NULL;
WORD* wTmp;
DWORD dwHandlev = NULL;
UINT dwLength;
char sFileName[1024] = {0};
char sTmp[1024] = {0};
AnsiString sInfo;
LPVOID* pVersionInfo;
if(ModulePath == NULL) GetModuleFileName(NULL, sFileName, 1024);
else strcpy(sFileName, ModulePath);
DWORD dwInfoSize = GetFileVersionInfoSize((char*)(LPSTR)sFileName, &dwHandlev);
if(dwInfoSize) {
pVersionInfo = new LPVOID[dwInfoSize];
if(GetFileVersionInfo((char*)(LPCTSTR)sFileName, dwHandlev, dwInfoSize, pVersionInfo)) {
if(VerQueryValue(pVersionInfo, "\\VarFileInfo\\Translation", &lpStr1, &dwLength)) {
wTmp = (WORD*)lpStr1;
sprintf(sTmp, ("\\StringFileInfo\\%04x%04x\\" + KeyName).c_str(), *wTmp, *(wTmp + 1));
if(VerQueryValue(pVersionInfo, sTmp, &lpStr2, &dwLength)) sInfo = (LPCTSTR)lpStr2;
}
}
delete[] pVersionInfo;
}
return sInfo;
}
Działa fajnie pod Builderem 2010 ale w XE już mi nie działa i wali błędami:
[BCC32 Error] TFileVersion.cpp(51): E2034 Cannot convert 'char[1024]' to 'wchar_t *' |
Może mi ktoś wytłumaczyć o co chodzi w tym Stringach tutaj bo zgłupiałem. Nie chce tego na pałę przeprawiać oby działało. Chce wiedzieć o co tu chodzi.