hallo,
ich verusche aus einer exe datei die versionsinfo auszulesen. leider gelingt mir das noch nicht so recht. kann mir jemand evtl noch einen tipp geben ?
hier der code soweit:
#include<iostream>
#include<afx.h>
#include<string>
using namespace std;
CString GetFileVersionString(const CString& FileName)
{
// prüfen ob überhaupt Info da sind
DWORD nSize = GetFileVersionInfoSize(FileName, 0);
CString Result = "";
if (nSize)
{
char *pInfo = new char[nSize];
// Versionsinfo auslesen
GetFileVersionInfo(FileName, 0, nSize, pInfo);
VS_FIXEDFILEINFO *FileInfo;
UINT uLen;
// Root-Information auslesen
VerQueryValue(pInfo, "\\", (void**) &FileInfo, (PUINT) &uLen);
// Versionsnummer bilden
Result.Format("%d.%d.%d.%d",
HIWORD(FileInfo->dwProductVersionMS),
LOWORD(FileInfo->dwProductVersionMS),
HIWORD(FileInfo->dwProductVersionLS),
LOWORD(FileInfo->dwProductVersionLS));
// Speicher freigeben (ich bin mir nicht sicher, aber vermutlich zeigt FileInfo auf diesen Datenbereich)
delete [] pInfo;
}
return Result;
}
int main (void)
{
CString FileVersion = "Version: " + GetFileVersionString(":\\Dokumente und Einstellungen\\Hereich\\Desktop.test.exe");
return 0;
}
fehlermeldung:
c:\doku......d\dsyd.cpp(11) : error C2664: 'GetFileVersionInfoSizeA' : Konvertierung des Parameters 1 von 'const class CString' in 'char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
c:\doku....\dsyd.cpp(19) : error C2664: 'GetFileVersionInfoA' : Konvertierung des Parameters 1 von 'const class CString' in 'char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.
dsyd.obj - 2 Fehler, 0 Warnung(en)c:\dokumente und
ich verusche aus einer exe datei die versionsinfo auszulesen. leider gelingt mir das noch nicht so recht. kann mir jemand evtl noch einen tipp geben ?
hier der code soweit:
#include<iostream>
#include<afx.h>
#include<string>
using namespace std;
CString GetFileVersionString(const CString& FileName)
{
// prüfen ob überhaupt Info da sind
DWORD nSize = GetFileVersionInfoSize(FileName, 0);
CString Result = "";
if (nSize)
{
char *pInfo = new char[nSize];
// Versionsinfo auslesen
GetFileVersionInfo(FileName, 0, nSize, pInfo);
VS_FIXEDFILEINFO *FileInfo;
UINT uLen;
// Root-Information auslesen
VerQueryValue(pInfo, "\\", (void**) &FileInfo, (PUINT) &uLen);
// Versionsnummer bilden
Result.Format("%d.%d.%d.%d",
HIWORD(FileInfo->dwProductVersionMS),
LOWORD(FileInfo->dwProductVersionMS),
HIWORD(FileInfo->dwProductVersionLS),
LOWORD(FileInfo->dwProductVersionLS));
// Speicher freigeben (ich bin mir nicht sicher, aber vermutlich zeigt FileInfo auf diesen Datenbereich)
delete [] pInfo;
}
return Result;
}
int main (void)
{
CString FileVersion = "Version: " + GetFileVersionString(":\\Dokumente und Einstellungen\\Hereich\\Desktop.test.exe");
return 0;
}
fehlermeldung:
c:\doku......d\dsyd.cpp(11) : error C2664: 'GetFileVersionInfoSizeA' : Konvertierung des Parameters 1 von 'const class CString' in 'char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
c:\doku....\dsyd.cpp(19) : error C2664: 'GetFileVersionInfoA' : Konvertierung des Parameters 1 von 'const class CString' in 'char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.
dsyd.obj - 2 Fehler, 0 Warnung(en)c:\dokumente und