icon für arbeitsplatz/netzwerkumgebung etc..
-
hi,
ich bastel grade an einem dateimanager wie dem windows explorer.
mit SHGetFileInfo kann ich auch das zu einer endung gehörende icon auslesen.jedoch weiß ich nicht, wie ich an die systemicons wie dem von arbeitsplatz, netzwerkumgebung, desktop etc rankomme.
vielen dank
-
achso wo wir grad dabei sind:
mit GetDriveType() bekomme ich ja den typ eines laufwerks. wie finde ich jetzt aber zb raus, ob es ein diskettenlaufwerk oder ein usb-stick ist? (sind ja beides DRIVE_REMOVABLE).
danke
-
Mit der SHGetFileInfo-Funktion bekommst du ein Handle auf das jeweilige Icon und mit diesem Handle kannst du dann ja das entpsrechende Icon z.B. einer CListbox anzeigen.
SHFILEINFO sfi; ZeroMemory(&sfi, sizeof(SHFILEINFO)); SHGetFileInfo( extension.c_str(), FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES|SHGFI_ICON|SHGFI_SMALLICON); return sfi.hIcon;
-
und mit deinem Stick: schau doch einfach nach der Grösse des Datenträgers...
-
Wie funktioniert das mit dem Auslesen des Icon?
Ist extension dann der Pfad zur Datei?
Ich erhalte kein Icon in der Ansicht meiner List Box.SHFILEINFO sfi; ZeroMemory(&sfi, sizeof(SHFILEINFO)); LPCTSTR pfad="c:\\test.txt"; SHGetFileInfo( pfad, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES|SHGFI_ICON|SHGFI_SMALLICON); m_box.SetIcon(sfi.hIcon,FALSE);
-
Ja, genau, extension ist die Dateierweiterung. Du kannst aber auch den ganzen Dateinamen übergeben. Programmier leider nicht mit MFC aber prinzipiell müsste es so gehen, ja.
-
Hmm, wird leider kein Icon angezeigt. Ich mache wohl doch irgendwas
falsch. Ich poste gleich sonst mal im MFC-Bereich, falls niemand
in API eine Antwort drauf hat.
-
Schau dir vielleicht auch mal das hier an

-
hi,
erstmal danke für die antworten, jedoch ist eigentlich keine von denen hier eine auf meine frage(n).
wegen des laufwerkstypen: mit der größe würde es wohl gehen...aber etwas unsauber gelöst finde ich.
wegen der icons: ich weiß generell selber, wie ich die system icon list anspreche und kann auch die icons in meinem listview verwenden (hab ich wohl etwas unsauber ausgedrückt). mir geht es nur darum die speziellen icons auszulesen wie das des Arbeitsplatzes, was ja keine extension oä besitzt :p
das problem konnte ich aber mittlerweise selber mit SHGetSpecialFolderLocation und SHGFI_PIDL lösen. trotzdem danke an alle.das mit dem laufwerkstypen steht trotzdem noch aus, wenns echt keine andere lösung geben sollte werde ich das mit der datenträgergröße machen.
-
-
ich nochmal...gibt es auch die möglichkeit, nur aufgrund der kenntnis des typs eines laufwerks (HDD, CD-ROM...) herauszufinden, welches icon ich verwenden soll? also ohne wirklich aufs laufwerk zugreifen zu müssen.
ty