Seite 1 von 1

Größere Icons aus Exe extrahieren

Verfasst: 6. Februar 2010 11:48
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?

Verfasst: 6. Februar 2010 12:24
von MisterIKS
Habe endlich die Funktion wiedergefunden:

ExtractIconEx()

Sie erwartet ein HICON, wie kann ich ein solches zu einem Qt-freundlichen Objekt konvertieren?

Verfasst: 6. Februar 2010 14:03
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.

Verfasst: 6. Februar 2010 15:32
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...