|
Вопрос # 4 997/ вопрос открыт / |
|
Здравствуйте, эксперты!
Искал тут на сайте, но не нашел. Поэтому решил спросить.
Подскажите как программно поменять иконку у нужной мне папки
в Windows, чтобы в Explorere отображалась моя иконка
Заранее спасибо.
 |
Вопрос задал: Muratov Radik (статус: Посетитель)
Вопрос отправлен: 3 февраля 2011, 10:56
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: min@y™
Надо создать в ентой папке файл desktop.ini (можно скрытый) вот с такими строчками:
[.ShellClassInfo]
IconFile=<путь к файлу с иконкой, можно относительный (ico, exe, dll и т.п.)>
IconIndex=<номер иконки в файле (отсчёт с нуля)>
Затем надо установить самой папке атрибут "Системный".
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 3 февраля 2011, 11:25
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Вадим К
Здравствуйте, Muratov Radik!
План действий такой.
В нужной папке создаем файл с названием desktop.ini (можно просто как текстовый создать или на худой конец просто использовать memo) на три строки вида
[.ShellClassInfo]
IconFile=ИмяИконки.ico
IconIndex=0
Можно вместо ИмяИконки.ico прописать любой exe или dll, где есть иконка и указать правильный индекс иконки.
А дальше нужно сделать небольшую магию. На файл desktop.ini нужно наложить атрибуты системый и скрытый, а на саму папку - только для чтения (вот этот пункт иногда не нужен, иногда нужен).
выставить аттрибуты можно процедурой SetFileAttributes(имяфайла , FILE_ATTRIBUTE_*);
var
s:string;
begin
s := 'C:\mydir';
SetFileAttributes(s , FILE_ATTRIBUTE_READONLY);
SetFileAttributes(s + '\desktop.ini' , FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM);
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 3 февраля 2011, 11:30
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 3 февраля 2011, 13:41; участников в обсуждении: 5.
|
bugmenot (статус: 3-ий класс), 3 февраля 2011, 11:38 [#1]:
> самой папке атрибут "Системный"
одно лечит, другое калечит
с этим пунктом довольно туманно, работает и так, но в доках присутствует
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 3 февраля 2011, 11:41 [#2]:
2Вадим К: Папке надо присвоить атрибут "системный". Файлу desktop.ini никаких атрибутов присваивать не обязательно - щас сам проверял.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 3 февраля 2011, 11:57 [#3]:
Вот кусок статьи, взятый отсюда.
Цитата:
Пример, как может выглядить содержимое desktop.ini:
[{BE098140-A513-11D0-A3A4-00C04FD706EC}]
iconarea_image=Catalog.jpg
IconArea_Text=0x00999999
IconArea_TextBackground=0x00FFFFFF
[.ShellClassInfo]
IconFile="Catalog.ico"
IconIndex=0
InfoTip=Моя любимая папка!
Расшифровка параметров:
iconarea_image=картинка фона папки (если вместо пути только имя, то файл берётся из самого данного каталога)
IconArea_Text=цвет шрифта названия в html формате (шестнадцатиричном)
IconArea_TextBackground=цвет фона названия в html формате (шестнадцатиричном)
IconFile=файл с иконкой (значком) (или простой, с одной иконкой (.ico); или библиотека исконок в ресурсном файле (.exe,.dll,.icl, другие))
IconIndex=порядковый номер иконки в файле (нужно, если в IconFile=указана библиотека иконок, если простой файл (.ico), то всегда =0)
InfoTip=комментарий отображаемый во всплывающей подсказке
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 3 февраля 2011, 12:15 [#5]:
min@y™: Как показывает практика, на девяти машинах работает нормально, а на десятой не хочет. А выставишь флажок - работает. Может быть это зависит от каких то сервис паков или сторонних программ.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
DNK (статус: Студент), 3 февраля 2011, 12:15 [#6]:
Возможно это из пушки по воробьям, но есть ещё вариант с оверлейными значками.
"Digital Networked Knight"
|
|
bugmenot (статус: 3-ий класс), 3 февраля 2011, 12:28 [#7]:
> вариант с оверлейными значками
я думаю, это немного не то. а вот в соседнем топике описывается возможность массово объиконивать папки с помощью ShellIconHandler
http://msdn.microsoft.com/en-us/library/cc144122(VS.85).aspx
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Muratov Radik (статус: Посетитель), 3 февраля 2011, 13:41 [#8]:
Проверял по отдельности и с Системный, и с Только для чтения. Работает с обоими вариантами. Потом поставил оба сразу, тоже работает. Думаю ставить оба, на всякий случай
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|