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


Автор: knut 8.11.2006, 15:43
Добрый деень.
написал прогу каторая выдает productversion.Сделал длл проект productversion которого наго получить.

#pragma comment( lib, "knut.lib" ) //knut.lib это либа того длл проекта что я создал.и впиxнул его  прэкт каторый реализуюет задуманное.

  
В отдельном проекте реализуем задуманнае.
Код

bool GetVersions(LPCWSTR FileName,DWORD &dw1,DWORD &dw2,DWORD &dw3,DWORD &dw4)
{
    DWORD pHandle;
    bool res = false;
    if(DWORD BuffVer = GetFileVersionInfoSize(FileName,&pHandle))
    {
        LPBYTE Buffer = new BYTE[BuffVer];
        VS_FIXEDFILEINFO *pi = 0;
        
        if(GetFileVersionInfo(FileName,pHandle,BuffVer,Buffer))
        {
            UINT dwLen;
            if(::VerQueryValue(Buffer,_TEXT("\\"),(void**)&pi,&dwLen))
        
            {
                DWORD V1 = pi->dwFileVersionLS;
                DWORD V2 = pi->dwFileVersionMS;
                dw1 = HIWORD(V2);
                dw2 = LOWORD(V2);
                dw3 = HIWORD(V1);
                dw4 = LOWORD(V1);
                res = true;

            }
        }
        delete[] Buffer;
        Buffer = NULL;
    }
    return res;
}[size=1][/size]


и маин
Код


        DWORD v1,v2,v3,v4;  
                    LPCSTR    PathToMyself = new char[1024]; 
        GetModuleFileName(NULL,(LPWSTR)PathToMyself,1024);   
        GetVersions((LPWSTR)PathToMyself,v1,v2,v3,v4);
        
        delete [] PathToMyself;   
        PathToMyself = NULL;    
        
        
     _tprintf(_T("%01.1d,%01.1d,%01.1d,%01.1d\n"),v1,v2,v3,v4);[size=1][/size]

но вот вроде все зделал ок но...... "всегда это но" не фига не работает а проблемма с pragma comment ом
erros .
error LNK2019: unresolved external symbol.
Заранее спасоб за внимание.

Автор: Earnest 9.11.2006, 09:21
error LNK2019: unresolved external symbol - какой символ-то? Скорее всего, функции запроса версии. Библиотеку стало быть не подключил.

Автор: knut 9.11.2006, 15:28
Earnest, 
Если мне надо получить resourseversion той проги в котором рабоарет проект все ок. а вот  если надо получить resourseversion уже другой проги(dll aplication) вот тогда наченаются мучения.
1.надо загрузит длл.
2.получить xендл модулья.
3.получить путь  и т.д
Вот сообсвенно и вопрос
Правелны ли мои мышление?и есть ли другой способ реализовать идею(т.е получить resourseversion любого проекта).
И еще вопрос вот в МСДН написанно что эти функц в Coredll.lib либе(или я не прав?) но они презноют только version.lib почему?
1.GetFileVersionInfo.
2.VerQueryValue 
Заранее Спасибоsmile

Автор: Earnest 10.11.2006, 08:45
По-моему нет. Ты можешь получить версию любого исполняемого файла не загружая его.
Функция требует полное имя модуля и все дела. 
Естественно, version.lib нужно подключать к тому проекту, из которого ты собираешься эти функции вызывать. 

Автор: knut 11.11.2006, 12:47
какую либу надо вклучить в прагму под wince что бы заработал выше указанный код.vesrsion.lib не работает.
Код

#pragma comment (lib, "???????.lib")

Спасибо

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