Windows Vista Shell - Symbole

31/07/2008 - 19:36 von xYrus | Report spam
Hallo,

ich hàtte folgende Frage - vielleicht weiß ja hier jemand Bescheid, in den
MSDN Foren und sonstwo im Internet hatte jedenfalls niemand einen Ansatz
parat ;-)

Ich benötige für eine Anwendung ein Modul, welches in der Lage ist, die
"Jumbo"-Symbole von Dateien und Ordnern (256x256 PNG-basiertes Format -
sofern ich mich nicht irre) jedweden Pfades zu ermitteln und in irgendeiner
Form (System.Drawing.Bitmap, System.Windows.Media.ImageSource, HBITMAP etc)
in den Speicher zu laden. Und das in 32 Bits/Pixel inklusive (!)
Alpha-Kanal.

Mein Ansatz ging über SHGetInfo und spàter über System-ImageLists. Beides
hatte nicht den gewünschten erfolg. SHGetInfo liefert zwar Symbole von jedem
angegebenen Pfad - diese messen jedoch nur maximal 48x48 Pixel. Die
System-ImageLists sind zwar auch in der Lage, Symbole in Vista-Größe
auszugeben - allerdings verwirft irgendein internes Interface den
Alpha-Kanal. Da der Explorer das aber anscheinend auch irgendwie hinbekommt,
muss es ja wohl möglich sein.

Wàre schön wenn jemand eine Möglichkeit wüsste. Im Prinzip würde mir eine
API-Funktion oder ein kurzer Code-Block reichen. Wenn dieser in C++
geschrieben ist, ists auch nicht schlimm ;-)
Besten Dank im voraus schon mal!
xYrus
 

Lesen sie die antworten

#1 Frank Dzaebel
03/08/2008 - 10:00 | Warnen spam
Hallo,

wir benutzen hier gerne den vollen Vor- und Zuname als Username.

Ich benötige für eine Anwendung ein Modul, welches in der Lage ist, die
"Jumbo"-Symbole von Dateien und Ordnern (256x256 PNG-basiertes Format -
sofern ich mich nicht irre) jedweden Pfades zu ermitteln und in
irgendeiner Form (System.Drawing.Bitmap, System.Windows.Media.ImageSource,
HBITMAP etc) in den Speicher zu laden. Und das in 32 Bits/Pixel inklusive
(!) Alpha-Kanal.



Füge folgendes in diesem Download:

[vbAccelerator - System Image List]
http://www.vbaccelerator.com/home/n...rticle.asp

ein:

public enum SysImageListSize : int
{
/// ... ,

/// <summary>Windows Vista und spàter. Dieses Bild ist
/// normal 256x256 Pixel gross.</summary>
jumboIcons = 0x4
}

// [SHGetImageList Function ()]
// http://msdn.microsoft.com/en-us/lib...62185.aspx


______________________
Ersetze weiterhin den Aufruf:
new SysImageList(SysImageListSize.extraLargeIcons);
durch:
new SysImageList(SysImageListSize.jumboIcons);


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen