Как создать DLL-файл со значками
Вероятно вам приходилось видеть, что некоторые DLL-файлы содержат множество значков. Например, shell32.dll, imageres.dll и другие. Мы также можем создать такую библиотеку значков, которая будет храниться в DLL-файле. Также я покажу, как можно извлечь значки и вывести их на форме.
Шаг первый. Запустите Visual Studio 2010 и создайте новый проект Class Library. Для удобства я присвоил проекту имя IconLibrary.
Далее выбираем в меню File | New | File и в диалоговом окне выбираем пункт Native Resource Template и щелкаем на кнопке Open.
В результате будет создан файл ResTempl1.rct. Щелкните правой кнопкой на файле в Visual Studio и выберите команду Add Resource. .
В диалоговом окне Add Resource выберите элемент Icon и щелкните кнопку Import. . Вам необходимо указать значки, которые вы хотите импортировать. Рекомендую сложить все необходимые значки в одну папку и затем их выбрать сразу все (поддерживается множественный выбор). Когда вы щелкните кнопку Open, все значки будут импортированы под именами IDI_ICON1, IDI_ICON1 и т.д.
Снова выбираем команду Add Resource. и выбираем элемент Version и щелкаем на кнопке New. Будет создана заготовка для хранения информации о версии файла. Добавьте свою информацию о версии файла, названии продукта, торговой марке и т.д.
Далее необходимо сохранить файл ResTempl1.rct как res-файл (File | Save ResTempl1.rct as. и выберите расширение res).
Вернитесь на вкладку Class1.cs и выберите Project | IconLibrary Properties. . Установите переключатель Resource File и укажите путь к созданному ранее файлу ресурсов с расширением RES.
Далее выбираем Build | Build IconLibrary. В результате у нас образуется файл динамической библиотеки IconLibrary.dll.
Чтобы убедиться в том, что у нас появился полноценный DLL-файл со значками, выберите ярылк любого exe-файла, например, Notepad.exe и в свойствах ярлыка выберите кнопку Сменить значок. В диалоговом окне Смена значка через кнопку Обзор укажите путь к вашей библиотеке и вы увидите все значки, которые хранятся в вашем файле. Поздравляю, вы создали свою библиотеку значков.
Использование значков из DLL-файла
Существуют несколько вариантов использования DLL-файла со значками в собственных целях. Например, вы создали собственное расширение для своего приложения и в реестре можете прописать путь к вашему файлу и указать порядковый номер значка (эта тема выходит за рамки данной статьи).
Рассмотрим пример извлечения значка из Dll-файла и показа его на форме.
Создадим обычное приложение Windows Form Application и разместим на форме кнопку. Далее воспользуемся системной функцией Windows API ExtractIcon:
Итак, мы объявили фукнцию и теперь можем извлечь любой значок. Не забываем, что отчет значков идет с 0. Предположим, мы хотим вывести второй значок из DLL-файла в верхней части формы:
Как сделать библиотеку dll с иконками
В предыдущей заметке я продемонстрировал, как можно изменить значки Корзины на любой произвольный. Правда, я не учел один важный момент, на который обратили мое внимание мои подписчики. Если в качестве значка Корзины выбрать какой-то файл изображения (например, ICO), то значок будет меняться не автоматически при попадании в Корзину файлов, а только при принудительном обновлении экрана, то есть при нажатии клавиши F5. Кроме этого, если удалить файл с изображением, то и значок Корзины исчезнет (это может произойти сразу или после перезагрузки компьютера).
evlanoff
Умение создавать собственные динамические библиотеки (*.dll) со всевозможными ресурсами меня привлекала очень давно. Так как я не знаю языков программирования низкого уровня, проблема для меня оставалась актуальной. Желание начать “творить сегодня” нагнетало еще больше день ото дня. Учить C++/VB.NET только из-за умения создавать собственные библиотеки не очень то и хотелось.
И вот в один прекрасный день, совершенно случайно бродя по разным сайтам, я нашел программу для создания собственных библиотек.
На сей мажорной ноте закончу с лирическим вступлением и покажу как делать собственные библиотеки с иконками.
Инструменты которые нам понадобятся:
- Anolis Resourcer
- Paint.Net (или любой другой растровый редактор, который умеет работать с форматом – .ico)
- Плагин для Paint.Net позволяющий работать с форматом – .ico (Icon, Cursor, and Animated Cursor Format v3.7)
- Иконки. Я скачивал иконки с сайта www.iconsearch.ru много хороших и бесплатных иконок под лицензией GNU GPL, GNU LGPL и т.д.
Так как я использую Paint.Net для своих целей, описывать процесс конвертации из png в ico буду на примере оного. Процесс конвертации из png в ico, в других редакторах, я думаю мало чем отличается.
Для работы нам необходима всего 1 иконка размером не более 256 px.
Итак, поехали!
- Запускаем Paint.Net и открываем нашу иконку (Файл-Открыть-Выбираем нашу иконку-ок)
- Файл — Сохранить как — путь\имя_нашей_иконки.ico. После появится диалоговое окно в котором нам будет предложено выбрать размеры иконок. Я выбрал 128, 64, 48, 32, 24, 16 пикселей, с глубиной цвета 32 бита. Остальное менять не следует.
- Запускаем Anolis Resourcer
- File – New (задаем имя нашей библиотеки и выбираем где её сохранить)
- Далее жмем Import и получаем вот такое окно:

- Выставляйте параметры как на картинке.
- Зачем нужен язык, я честно говоря не знаю, поставил на всякий случай английский, хотя русский так же можно выбрать.
- Путь до нашей иконки.
- Тип ресурса. Самый важный параметр. Так как у нас все иконки в одном файле, это получается Icon Directory, но вы не пугайтесь, так и должно быть.
- Остальное не изменяйте. Жмите ок.
Собственная DLL-библиотека с иконками в Windows 10

Некоторым пользователям ПК, уже самостоятельно приходилось производить замену значков папок в Win 10, а следовательно, вы уже видели, как операционная система предлагает использовать альтернативный вариант значка, который располагается в файле SHELL32.dll, который в свою очередь, находится в папке system32.
Для того, чтоб самостоятельно упростить вышеописанную вкратце процедуру, вам необходима собственная DLL-библиотека с иконками в Windows 10, которая станет для вас в некотором роде «контейнером» или же «библиотекой». Особенность данного хранилища в том, что научившись создавать его единожды, он всегда у вас будет под рукой и при необходимости вы сможете использовать его для иных целей, чем хранение иконок. Так же у вас будет возможность быстро создать новое хранилище, которое вам будет так же необходимо для иных целей. Кроме того, данный способ идеально подходит для тех из вас, кто не желает использовать пакет разработчика Microsoft Visual Studio и уж тем более, не имеет не каких знаний языков программирования C++ или VB.NET.
Для того, чтоб у вас все правильно получилось, вам необходимо скачать утилиту Anolis Resourcer и тот набор иконок в формате «ICO» с разрешением не более 256×256 пикселей, который вы собираетесь использовать.
Сразу дадим вам совет, что используемые вами иконки, лучше всего переименовать таким образом, чтоб было проще их использовать, так как в противном случае, велик шанс запутаться.
Производите запуск Anolis Resourcer и проделайте следующий лог действий: нажмите на «File» → «New» → сохраните в данный момент пустой файл DLL в удобном для вас месте. Обратите внимание, что сохраняемый DLL файл, должен непременно иметь имя на латинице «ico.dll».


Теперь, будущая динамическая библиотека, будет отображаться в левой части рабочего окна утилиты. Нажмите на кнопку «Import» для того, чтоб у вас открылось окно в котором необходимо указать путь до ваших иконок при помощи кнопки «Browse»:



После того, как вы нажмете на «Ок», в левой части окна утилиты (выглядит как колонка), вы увидите две вновь созданных папки с именами «Icon Image» и «Icon Directory» — в данных папках будут храниться иконки.

При желание, можете воспользоваться возможность настраивать иконки при помощи различных опций, среди которых имеется даже задний фон.

Остается поочередно добавить все иконки через утилиту и в итоге, нажать на «Save», что позволит сохранить библиотеку в каталог, из которого вы брали иконки.

На этом все! Ваша собственная DLL-библиотека с иконками в Windows 10 готова к использованию и вы можете ею полноценно пользоваться столько времени, сколько вам угодно. Кроме того, с этой библиотекой, вы можете ставить разного рода эксперименты, что так же удобно и по своему практично, так что, этот вариант настройки своей ОС вам уж точно должен понравиться.