powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить иконку, связанную с директорией?
5 сообщений из 5, страница 1 из 1
Как получить иконку, связанную с директорией?
    #38412023
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Чтобы получить иконку, связанную с файлом существует метод ExtractAssociatedIcon.
Каким образом можно получить иконку директории (например, жесткого диска, рабочего стола, папки, ... ). Мне нужно их показать рядом с названием директорий в моем TreeView
...
Рейтинг: 0 / 0
Как получить иконку, связанную с директорией?
    #38412121
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как получить иконку, связанную с директорией?
    #38412458
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч http://stackoverflow.com/q/5523116/60188

Через функцию SHGetFileInfo получается только иконку папки найти, и то стандартную Windows иконку, а папке можно задать и любые другие.

Как, например, иконку жесткого диска или рабочего стола программно найти?
...
Рейтинг: 0 / 0
Как получить иконку, связанную с директорией?
    #38412481
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,
Вы простоне правильно ее наверное приготовили, показывает весь кастом....

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //показывает папку
            //if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            //{
            //    textBox1.Text = folderBrowserDialog1.SelectedPath;
            //    pictureBox1.Image = ShellFileInfo.GetIcon(textBox1.Text).ToBitmap();
            //}

            // показывает файл
            //if (openFileDialog1.ShowDialog() == DialogResult.OK)
            //{
            //    textBox1.Text = openFileDialog1.FileName;
            //    pictureBox1.Image = ShellFileInfo.GetIcon(textBox1.Text).ToBitmap();
            //}

            //показывает диск аки - C:
            pictureBox1.Image = ShellFileInfo.GetIcon(textBox1.Text).ToBitmap();
        }
    }
    public static class ShellFileInfo
    {
        private const uint SHGFI_ICON = 0x100;
        private const uint SHGFI_LARGEICON = 0x0;

        static class NativeMethods
        {
            [DllImport("shell32.dll", SetLastError = true)]
            public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);

            [DllImport("user32.dll")]
            public static extern int DestroyIcon(IntPtr Icon);
        }

        [StructLayout(LayoutKind.Sequential)]
        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;
        };



        public static Icon GetIcon(string fileName)
        {
            var shinfo = new SHFILEINFO();
            if (NativeMethods.SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_LARGEICON) == IntPtr.Zero)
                Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
            var tmp = Icon.FromHandle(shinfo.hIcon);
            try
            {
                var res = (Icon)tmp.Clone();
                tmp.Dispose();
                NativeMethods.DestroyIcon(shinfo.hIcon);
                return res;
            }
            catch
            { }
            return null;
        }




    }



зы извиняюсь за назойливость, с мая студию не открывал, так что еще многое забылось
...
Рейтинг: 0 / 0
Как получить иконку, связанную с директорией?
    #38412658
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё работает. спасибо за помощь!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить иконку, связанную с директорией?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]