Изменяем значок Корзины (своя dll-библиотека)

Опубликовано: 14 января 2020

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

Однако таких проблем не возникнет, если воспользоваться стандартными значками, которые находятся в специальном системном файле shell32.dll.

Библиотека shell32.dll

Отсюда можно вытекает, что если добавить свои иконки в такой системный файл, то и выше перечисленные проблемы будут решены.

И давайте посмотрим, как это можно сделать.

На самом деле, нам не обязательно добавлять иконки в уже существующий системный файл, а можно создать свой файл-библиотеку. Более того, я настоятельно НЕ рекомендую менять стандартные системный файлы, так как это может повлечь за собой абсолютно непредсказуемые последствия.

Итак, создадим свой файл-библиотеку с расширением DLL. Стоит сказать, что файлы DLL (Dynamic Link Library) — это так называемые динамически подключаемые библиотеки. По сути своей они являются контейнером, в котором могут находиться различные компоненты, используемые исполняемыми файлами (с расширением EXE).

То есть обычно мы запускаем программу именно с помощью исполняемого файла и этот файл может подгружать различные графические элементы или другие компоненты из динамических библиотек. Именно таки образом и используются значки из файла shell32.dll в операционной системе Windows.

В создании собственного DLL-файл со значками нам поможет замечательная утилита Resource Hacker. Когда-то очень давно я использовал данную программу для перевода на русский язык других программ. Она позволяет получить доступ ко «внутренностям» файлов и мы получаем возможность изменять их.

Скачать утилиту можно с сайта разработчика — http://www.angusj.com/resourcehacker

Resource Hacker является довольно мощной утилитой, имеющей множество возможностей. Однако мы будем ее использовать только для создания своей собственной динамической библиотеки с изображениями.

Итак, скачиваем, устанавливаем и запускаем утилиту. Она на английском языке и здесь много различных опций, но это не должно вас пугать, так как нам понадобится только одна кнопка, которая позволит добавить в качестве ресурса изображение.

Resource_Hacker

Необходимо заранее подготовить изображения и нажимаем на кнопку Select File, что означает «Выбрать файл».

Добавление изображения в DLL

Каждый ресурс в библиотеку добавляется отдельно, поэтому здесь мы можем выбрать только одно изображение. Далее нужно задать ему имя. По умолчанию предлагается название файла изображения.

Иконки в DLL

Можно его изменить, например, на 1. Аналогично добавляем и другие значки.

Далее щелкаем по кнопке, позволяющей сохранить проект как динамическую библиотеку.

Сохранить как DLL

Зададим название файла, например, korzina.dll. Не забываем через точку указать расширение DLL.

В нашем случае можно сохранить библиотеку, например, в Документы. Файл библиотеки должен остаться на компьютере, так как после замены значков в операционной системе она будет к нему постоянно обращаться. После всех манипуляций этот файл можно будет сделать, например, скрытым и тогда он не будет попадаться на глаза.

Файл DLL

Ну и все готово. Осталось только применить изображения из файла к Корзине, о чем подробно рассказывалось в предыдущей заметке.

Аналогичные библиотеки можно использовать для изменения значков других объектов, например, можно задать индивидуальные значки различным папкам.