[gelöst] ICON's aus z.B.: *.EXE auslesen?

Alles rund um die Programmierung mit Qt
Antworten
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

[gelöst] ICON's aus z.B.: *.EXE auslesen?

Beitrag 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
Zuletzt geändert von Hulk2442 am 9. November 2009 14:59, insgesamt 1-mal geändert.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Meinst du die icons die du im EWxplorer siehst??
MartinS
Beiträge: 6
Registriert: 26. Juli 2007 21:32

Beitrag von MartinS »

Du kannst es ja mal mit QFileIconProvider versuchen:

QFileInfo info([Pfad zur Datei];

QFileIconProvider provider;

QIcon icon = provider.icon(info);
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Re: ICON's aus z.B.: *.EXE auslesen?

Beitrag 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.
Linux, das längste Text-Adventure aller Zeiten
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag 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) );
}
Antworten