Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Puno (pravo) ime neke aplikacije (windows)

[es] :: C/C++ programiranje :: Puno (pravo) ime neke aplikacije (windows)

[ Pregleda: 2549 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MilošV
Podgorica

Član broj: 7996
Poruke: 484
195.66.163.*



+1 Profil

icon Puno (pravo) ime neke aplikacije (windows)01.11.2004. u 13:01 - pre 236 meseci
Cao :)
Imam neki osjecaj da ce pitanje zvucati prilicno konfuzno, hehehe, najbolje da objasnim primjerom: Ime fajla je (npr.) "ttlcmd.exe"... Kada se pokrene program ili pogledaju properties od fajla, pise (naravno) "Total commander".
Kako da "izvucem" ovu informaciju iz nekog *.exe fajla, bez otvaranja istog?

Probao sam sa kombinacijom GetFileVersionInfoSize, GetFileVersionInfo, VerFindFile itd. ali, kao sto pogadjate, da sam uspio nebih sad ovdje pitao :)
 
Odgovor na temu

Beban
Beograd

Član broj: 6351
Poruke: 39
*.informatika.com.



Profil

icon Re: Puno (pravo) ime neke aplikacije (windows)02.11.2004. u 11:50 - pre 236 meseci
Bio si blizu rješenja - trebalo je uključiti još samo par funkcija.
Postiraću ti na brzinu sklepan kod, koji kod mene radi (provjereno).

Code:
#include <windows.h>
#include <iostream>
using namespace std;

void main()
{
    DWORD dwSize = GetFileVersionInfoSize("brisime.exe", 0);
    void*    pFileInfo;
    UINT    size;
    void*    pData = (void*)new unsigned char[dwSize];
    char chBuff[1024];
    
    GetFileVersionInfo("brisime.exe", NULL, dwSize, pData);

    DWORD* ptr;
    VerQueryValue(pData, "\\VarFileInfo\\Translation", 
        (void**)&ptr, &size);
    sprintf(chBuff, "\\StringFileInfo\\%04x%04x\\ProductName",
                ((*ptr) & 0xFFFF), ((*ptr) & 0xFFFF0000) >> 16);

    VerQueryValue(pData, chBuff, &pFileInfo, &size);

    char* chName = (char*)pFileInfo;
    cout << chName << endl;
}


Važno je da uključiš version.lib u projekat.
Ovo nije baš "najsrećnije" rješenje, treba provjeravati povratne vrijednosti iz funkcija, itd., ali radi i može ti poslužiti kao pomoć. Na ovaj način možeš izvući i ostale informacije o fajlu koje te interesuju, a koje je proizvođač dokumentovao u resursima.
 
Odgovor na temu

MilošV
Podgorica

Član broj: 7996
Poruke: 484
195.66.163.*



+1 Profil

icon Re: Puno (pravo) ime neke aplikacije (windows)03.11.2004. u 10:19 - pre 236 meseci
Hvala :)

Nesto slicno sam vec nasao, jedini je problem (kako si i sam rekao) u podacima koje je proizvodjac upisao u fajl. Tako, neki nemaju ProductName / FileDescription a neke aplikacije iz standardnog Win paketa (npr. calc.exe) kao ProductName imaju "Microsoft® Windows® Operating System" :)

Trazeci ovo nadjoh jednu besplatnu komponentu za C++Builder... Da ne budem nezahvalan, sama komponenta je prilicno bezveze, ali ono sto je dobro je funkcija GetFileVersionField (koju je autor komponente i sam odnekud "capio") -dovoljno je iskopirati pomenutu f-ju i pogledati nacin na koji se poziva kroz druge, nema potrebe za instalacijom:
http://www.imranweb.com/exever.cpp
http://www.imranweb.com/ExeVer.h
 
Odgovor na temu

[es] :: C/C++ programiranje :: Puno (pravo) ime neke aplikacije (windows)

[ Pregleda: 2549 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.