Seite 1 von 1
[gelöst] ICON's aus z.B.: *.EXE auslesen?
Verfasst: 9. November 2009 12:04
von Hulk2442
Hi
Ich möchte das Icon aus eines Programms oder einer anderen Datei darstellen.
Also z.B. von:
- -) *.exe
-) *.mp3
-) *.jpg
-) *.doc
-) usw.
Das ganze soll auf einem Windowsrechner laufen es klappt jedoch nicht.
Ich habe mir diesbezüglich das <QFile> und <QFileInfo> angeschaut jedoch finde ich das nichts in diese Richtung!
Hat jemand vielleicht eine Lösung oder zumindest einen Ansatz um wie ich die Icons auslesen könnte?
TIA
Verfasst: 9. November 2009 12:25
von AuE
Meinst du die icons die du im EWxplorer siehst??
Verfasst: 9. November 2009 12:32
von MartinS
Du kannst es ja mal mit QFileIconProvider versuchen:
QFileInfo info([Pfad zur Datei];
QFileIconProvider provider;
QIcon icon = provider.icon(info);
Re: ICON's aus z.B.: *.EXE auslesen?
Verfasst: 9. November 2009 13:50
von RavenIV
Hulk2442 hat geschrieben:Hi
Ich möchte das Icon aus eines Programms oder einer anderen Datei darstellen.
Also z.B. von:
- -) *.exe
-) *.mp3
-) *.jpg
-) *.doc
-) usw.
Das Icon einer exe ist in der exe selbst enthalten. Dieses kann man auch extrahieren.
mp3, jpg, doc, usw. haben kein Icon enthalten. Da wird vom Explorer das Icon angezeigt, mit dem die Datei verknüpft ist oder das Icon, das der Dateiendung zugeordnet ist.
DLLs können ein oder mehrere Icons enthalten, diese kann man auch extrahieren und anzeigen.
Verfasst: 9. November 2009 14:59
von Hulk2442
@ MartinS
THX für die Hilfe!
Mit folgendem Code Funkt es bei *.EXE und auch allen anderen Formaten.
Auszug aus einem Testprogramm:
Code: Alles auswählen
//============================================================================== create
void CWindow::create()
{
pVLayout = new QVBoxLayout;
pLabel_1 = new QLabel;
pLabel_2 = new QLabel;
pLabel_3 = new QLabel;
pLabel_4 = new QLabel;
pVLayout->addWidget(pLabel_1);
pVLayout->addWidget(pLabel_2);
pVLayout->addWidget(pLabel_3);
pVLayout->addWidget(pLabel_4);
this->setLayout(pVLayout);
}
//============================================================================== create
void CWindow::display()
{
//MS-Messanger
QFileInfo info_1( "C:/msmsgs.exe" );
//FireFox
QFileInfo info_2( "C:/FirefoxPortable.exe" );
//VB-Script
QFileInfo info_3( "C:/OFFICE.VBE" );
//Verknüfung auf dem Desktop mit einem eigenem Icon
QFileInfo info_4( "C:/Documents and Settings/atw10d51/Desktop/Train" );
QFileIconProvider provider_1;
QFileIconProvider provider_2;
QFileIconProvider provider_3;
QFileIconProvider provider_4;
QIcon icon_1 = provider_1.icon(info_1);
QIcon icon_2 = provider_2.icon(info_2);
QIcon icon_3 = provider_3.icon(info_3);
QIcon icon_4 = provider_4.icon(info_4);
pLabel_1->setPixmap( icon_1.pixmap(40, 40) );
pLabel_2->setPixmap( icon_2.pixmap(40, 40) );
pLabel_3->setPixmap( icon_3.pixmap(40, 40) );
pLabel_4->setPixmap( icon_4.pixmap(40, 40) );
}