Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > получене версии ехе файла


Автор: knut 18.10.2007, 14:59
надо получить с ресурсов версию ехе файла.
в ресурсы добовляю VS_VERSION_INFO. и надо прочитать версию ехе.
делаю след.
Код



wchar_t *My_Path = new wchar_t[1024];
GetModuleFileName(NULL,(LPWSTR)My_Path,1024);
DWORD v1,v2,v3,v4;
GetVersions((LPWSTR)My_Path,v1,v2,v3,v4);
delete []My_Path;
My_Path = NULL;


и собственно функц. релиз.
Код



bool GetVersions(LPWSTR FileName,DWORD &dw1,DWORD &dw2,DWORD &dw3,DWORD &dw4)
{

    bool res = false;
    DWORD dw;
    DWORD d_Size;
    DWORD Handle;
    if(d_Size = GetFileVersionInfoSize(FileName,&Handle))
    {
            BYTE *Ver = new BYTE[d_Size];
            if(GetFileVersionInfo(FileName,Handle,d_Size,&Ver))
            {
                VS_FIXEDFILEINFO *Version_Info;
                UINT  d_Len;
                DWORD v1,v2,v3,v4;
        if(VerQueryValue(Ver,_T("\\"),(void**)&Version_Info,&d_Len))
                {
                
        DWORD V1 = Version_Info->dwProductVersionMS;
        DWORD V2 = Version_Info->dwProductVersionLS;

                    v1 = HIWORD(V1);
                    v2 = LOWORD(V2);
                    v3 = HIWORD(V2);
                    v4 = LOWORD(V1);

                    res = true;

                }
            }
            delete[]Ver;
            Ver = NULL;

    }
    dw = GetLastError();
    return res;

}



но в if(GetFileVersionInfoSize) незаходет.
и гетластеррор возврошает 1814. что 
ERROR_RESOURCE_NAME_NOT_FOUND
????
в чем дело? 

Автор: NiJazz 18.10.2007, 16:48
FindResource
EnumResourceNames

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)