Größere Icons aus Exe extrahieren

Alles rund um die Programmierung mit Qt
Antworten
MisterIKS
Beiträge: 10
Registriert: 5. Februar 2010 17:46
Kontaktdaten:

Größere Icons aus Exe extrahieren

Beitrag von MisterIKS »

Guten Morgen,

Mit folgendem Code möchte ich aus einer .exe-Datei deren Pfad in filePath gespeichert ist das Icon herausziehen und ich einem Image speichern:

Code: Alles auswählen

QFileInfo *info = new QFileInfo(filePath);
        QFileIconProvider *provider = new QFileIconProvider();
        image = new QImage(provider->icon(*info).pixmap(128,128).toImage());
Das klappt an sich, bloß erhalte ich immer nur das kleinste Icon, das die Exe enthält, meisstens 32x32 pixel groß. Heutzutage enthalten aber fast alle Programme icons mit bis zu 256x256 pixeln. Ich sehe aber weder in FileInfo noch in FileIconProvider eine Möglichkeit auf größere Icons zuzugreifen.

Ich habe in der MSDN eine Funktion gefunden die mit auf größere Icons zurückgibt, finde sie leider gerade nicht und wusste auch nicht wie ich das mit Qt vereinen sollte.

Gibt es eine andere Möglichkeit?
MisterIKS
Beiträge: 10
Registriert: 5. Februar 2010 17:46
Kontaktdaten:

Beitrag von MisterIKS »

Habe endlich die Funktion wiedergefunden:

ExtractIconEx()

Sie erwartet ein HICON, wie kann ich ein solches zu einem Qt-freundlichen Objekt konvertieren?
MisterIKS
Beiträge: 10
Registriert: 5. Februar 2010 17:46
Kontaktdaten:

Beitrag von MisterIKS »

Ich habe inzwischen etwas weitergespielt und habe diesen Code zusammengestellt:

Code: Alles auswählen

HICON smallIcon, bigIcon;
WCHAR path;
filePath.toWCharArray(&path);
ExtractIconEx(&path,0,&smallIcon,&bigIcon,1);
image = new QImage(QPixmap::fromWinHICON(bigIcon).toImage());
Er compiliert ohne Fehler aber es wird kein Icon zurückgegeben. Ich hoffe immernoch auf einen Tipp.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Eigentlich müsste es sogar crashen... -> http://qt.nokia.com/doc/4.6/qstring.html#toWCharArray
Des weiteren hat ExtractIconEx() einen Rückgabewert...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten