Ребят, провозился с данной проблемой уже 5 дней. Потерял уже какую либо надежду на получение желанного результата. КТО НИБУТЬ, ПОМОГИТЕ ПЛЗ...Вот проблема... Я вытаскиваю иконки из файла или папки при помощи WinApi из Shell32.dll посредством функции SHGetFileInfo и вставляю иконки в ImageList(C#). Собственно интересует как достать индекс(порядковый номер) иконки в системном ImageList, дабы сверять присутствует ли таковая в ImageList? Или предложите какой нить другой вариант как определить, вставлял ли я иконку уже в созданный мной ImageList или нет. А если вставлял то обратиться по такому то индексу в ImageList. Если есть возможность, напишите код...
Вот один из многих вариантов кода, который также успешно не работает должным образом, как и другие
Код | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Drawing; using System.Windows.Forms; namespace IconObtainer { class IconReceiver { #region Variable List public const uint SHGFI_ICONLOCATION = 0x000001000; private const uint SHGFI_ICON = 0x100; public const uint SHGFI_SYSICONINDEX = 0x000004000; // get system icon index private const uint SHGFI_SMALLICON = 0x1; public SHFILEINFO IconContainer; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct SHFILEINFO { public IntPtr hIcon; public int iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName; };
#endregion
[DllImport("shell32.dll", CharSet = CharSet.Auto)] private static extern void SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags); public int GetIcon(string FilePath) { IconContainer = new SHFILEINFO(); SHGetFileInfo(FilePath, 0, ref IconContainer, (uint)Marshal.SizeOf(IconContainer), SHGFI_ICONLOCATION); // Icon CurIcon = (Icon)Icon.FromHandle(IconContainer.hIcon); MessageBox.Show(IconContainer.iIcon.ToString()); return IconContainer.iIcon;//Постоянно выдаёт 0 3 или 8 в зависимости от путя к файлу, который я указываю . Больше ничего... } } }
|
|