Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизПолучить иконку папки для ShGetFileInfo Найти похожие ветки
← →
Андрей Молчанов (2005-08-08 22:10) [0]Здравствуйте!
Нужно получить индекс иконки обыкновенной папки от функции SHGetFileInfo. В действительности папка может не существовать. По идее можно взять от C:\Windows, но такой папки может и не быть или пользователь может установить на нее свою иконку. Спасибо.
← →
Mx © (2005-08-08 22:16) [1]Если я правильно понял, то можно залезть в Shell32.dll и посмотреть индекс. Думаю он стандартный для всех Windows.
← →
Гаврила © (2005-08-08 22:19) [2]
> но такой папки может и не быть
Папку Windows можно узнать
> или пользователь может установить на нее свою иконку
Каким образом?
← →
Mx © (2005-08-08 22:21) [3]
> Гаврила © (08.08.05 22:19) [2]
> > или пользователь может установить на нее свою иконку
> Каким образом?
Всплывающее меню/Свойства/Настройка
← →
Андрей Молчанов (2005-08-08 22:26) [4]
> Если я правильно понял, то можно залезть в Shell32.dll и
> посмотреть индекс. Думаю он стандартный для всех Windows.
Действительно - 4 и 5. Но, при использовании подставляются не те иконки :(
> Каким образом?
C помощью StyleXP
← →
Mx © (2005-08-08 22:35) [5]Блин, фиг знает, особенно с учетом замечания C помощью StyleXP
← →
Mx © (2005-08-08 22:36) [6]
> Андрей Молчанов (08.08.05 22:26) [4]
А зачем тебе это надо? Может по-другому сформулировать задачу, тогда и другое решение будет?
← →
Наиль © (2005-08-08 22:44) [7]Цитата из каких-то "советов"
Стандартные значки Windows 9x. В разделе реестра [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\explorer\Shell Icons] содержится множество строковых параметров с именем в виде числа. Каждый из них отвечает за значок какого-либо объекта:
...
3 Папка
4 Открытая папка
...
Установите значением параметра путь к значку (если значок хранится в библиотеке, то после пути к ней, через запятую, нужно указать номер значка, начиная с нуля), и он изменится.
← →
Наиль © (2005-08-08 22:52) [8]Думаю, ясно, что нужно читать соотвествующую ветку реестра, чтобы узнать иконку общую для всех папок.
Но это пустяки, у каждой папки может быть свой значок, см. [3]
Он храниться в Desktop.ini, в соответсвующей папке в виде
[.ShellClassInfo]
IconFile=%SystemRoot%\system32\SHELL32.dll
IconIndex=19
Делай выводы.
← →
Mx © (2005-08-09 00:08) [9]
> Наиль © (08.08.05 22:52) [8]
Я бы не был так уверен про реестр. Например, у меня приведенного ключа нет вообще.
← →
Наиль © (2005-08-09 00:22) [10]Придётся мне отвечать за свои слова.
Значок папки (у меня XP) храниться в реестре по адресу
HKEY_LOCAL_MACHINE\Classes\Folder\DefaultIcon
Кстати, я заметил, что DefaultIcon имеется очень у многих объектов (интерфейсов) в реестре.
← →
Андрей Молчанов (2005-08-09 10:10) [11]Похоже, я задал вопрос некорректно - у меня есть ImageList
CheckTree.Images.Handle := SHGetFileInfo("C:\", 0, fi, SizeOf(fi), SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
Как мне присвоить элементу дерева, связанному со списком, иконку стандартной папки? Причем, в реальности папки может не быть.
← →
Rouse_ © (2005-08-09 10:22) [12]> Как мне присвоить элементу дерева, связанному со списком,
> иконку стандартной папки?
Возьми эту иконку из %SystemRoot%\system32\SHELL32.dll иконку с индексом 3
← →
Андрей Молчанов (2005-08-09 10:32) [13]Нет, у меня imagelist системный стоит. Мне нужно индекс иконки папки.
← →
Гаврила © (2005-08-09 10:56) [14]Кстати, именно на папку Windows иконка, похоже, не может меняться поьльзователем
← →
Mx © (2005-08-09 11:00) [15]
> Андрей Молчанов (09.08.05 10:32) [13]
> Нет, у меня imagelist системный стоит
Что значит системный? И чем его "индекс" отличается от обычного?
← →
Андрей Молчанов (2005-08-09 11:45) [16]Пожалуйста, приведите код, с помощью которого я могу присвоить индекс стандартной, возможно несуществующей, папки.
← →
Андрей Молчанов (2005-08-09 18:47) [17]Методом тыка наконец то нашел - надо просто вызвать SHGetFileInfo("", 0, fi, SizeOf(fi), SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
fi.iIcon будет иконкой папки
← →
Mx © (2005-08-09 22:27) [18]
> Андрей Молчанов (09.08.05 18:47) [17]
Ну вот видишь, "камушек" ShellAPI все больше поддается :)
← →
Андрей Молчанов (2005-08-10 08:48) [19]:) Спасибо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c