Как сделать библиотеку dll с иконками
В предыдущей заметке я продемонстрировал, как можно изменить значки Корзины на любой произвольный. Правда, я не учел один важный момент, на который обратили мое внимание мои подписчики. Если в качестве значка Корзины выбрать какой-то файл изображения (например, ICO), то значок будет меняться не автоматически при попадании в Корзину файлов, а только при принудительном обновлении экрана, то есть при нажатии клавиши F5. Кроме этого, если удалить файл с изображением, то и значок Корзины исчезнет (это может произойти сразу или после перезагрузки компьютера).
Как создать 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-файла в верхней части формы:
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

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


Обратите внимание, что создаваемая вами «динамическая библиотека», будет располагаться в левой части «Рабочего стола».
4. Жмем на «Import» → в открывшемся окне указываем полный путь до иконок располагающихся у вас в компьютере. Делается это при помощи клика по кнопке «Browse».



После нажатия на кнопку «Ок», можно будет заметить, что у вас на компьютере произошло создание двух новых папок, которые получили автоматические названия: «Icon Image» и «Icon Directory». Как раз именно во вновь созданных папках и будут храниться ваши иконки.



К слову сказать, благодаря утилите Anolis Resourcer, вы сможете настраивать отображение иконок так, как вам того захочется, так как здесь у вас возможности будут практически безграничны, вплоть до настраивания заднего фона у иконок, а о том, что можно произвести мелкие настройки иконок, и говорить не приходится.
Вот именно таким образом, мы и создаем DLL-библиотеку с иконками в Windows 10, которые полноценно работают и имеют возможность позволить любому пользователю кастомизировать свою операционную систем таким образом, каким этого еще не кто не делал.