Hi!
Ich möchte das Bild, das von einer Datei zur Darstellung verwendet wird, mit C# auslesen und weiterverwenden. Kann mir jemand erklären ob/wie das geht?
Danke!
Seite 1 von 1
Icon Aus Datei Auslesen? C#
Anzeige
#2
geschrieben 02. August 2005 - 15:41
Eine native .NET Funktion dafür kenne ich nicht. Evtl wirst du an den InteropServices nicht vorbeikommen.
[System.Runtime.InteropServices.DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
#3
geschrieben 02. August 2005 - 21:02
Danke - aber ich verstehe nur Bahnhof
Gibt es für die böhmischen Dörfer auch eine Landkarte?
HILFE!
Gibt es für die böhmischen Dörfer auch eine Landkarte?
HILFE!
#4
geschrieben 05. August 2005 - 15:26
Hier eine "Landkarte"
Die Windows-Funktion SHGetFileInfo liefert dir Informationen zu einer Datei.
Zuerst wird eine Datei mit der von dir gesuchten Dateiendung erstellt. Mit SHGetFileInfo lässt du dir einen struct (SHFILEINFO) zurückgeben, der unter anderem auch das Icon der Datei enthält. Über Icon.FromHandle() liest du das Icon aus dem struct aus. Zum Schluss kann die Datei gelöscht werden
Viel Spaß!
Die Windows-Funktion SHGetFileInfo liefert dir Informationen zu einer Datei.
Zuerst wird eine Datei mit der von dir gesuchten Dateiendung erstellt. Mit SHGetFileInfo lässt du dir einen struct (SHFILEINFO) zurückgeben, der unter anderem auch das Icon der Datei enthält. Über Icon.FromHandle() liest du das Icon aus dem struct aus. Zum Schluss kann die Datei gelöscht werden
<summary>Ermittelt das im Betriebsystem zugewiesene Image der FileExtension und liefert es zurück</summary> public static System.Drawing.Image GetFileExtensionImage(string p_sExtension) { string l_sFileName = ""; if(p_sExtension.StartsWith(".")) l_sFileName = @"c:\tempfile." + p_sExtension; else l_sFileName = @"c:\tempfile" + p_sExtension; File.Create(l_sFileName).Close(); IntPtr hImgSmall; SHFILEINFO shinfo = new SHFILEINFO(); hImgSmall = SHGetFileInfo(l_sFileName, 0, ref shinfo,(uint)Marshal.SizeOf(shinfo),SHGFI_ICON |SHGFI_SMALLICON); Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon); File.Delete(l_sFileName); return myIcon.ToBitmap(); } public const uint SHGFI_ICON = 0x100; public const uint SHGFI_LARGEICON = 0x0; // 'Large icon public const uint SHGFI_SMALLICON = 0x1; // 'Small icon [System.Runtime.InteropServices.DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags); [System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)] public struct SHFILEINFO { public IntPtr hIcon; public IntPtr iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName; }
Viel Spaß!
Dieser Beitrag wurde von constructor bearbeitet: 05. August 2005 - 15:27
Thema verteilen:
Seite 1 von 1