Как из картинки сделать значок dll

Обновлено: 05.07.2024

Как добавить к существующему проекту библиотеку dll
У меня создан проект из 20 форм, так вот в 20 форме мне необходимо импортировать из библиотеки.

Добавить dll в ресурсы, потом выгружать в папку с программой
Здравствуйте. Не хочу делать инсталятор программы, т.к. у программы есть всего 1 зависимый dll.

Не на С++, а на С++Builder. Это, во первых, две большие разницы, а, во вторых, они с Дельфи - близнецы братья и, окромя синтаксиса, никаких различий там не наблюдается.

Добавлено через 1 минуту

Вот только. Не примите за обиду, но Вам бы с элементарным (с INI-файлами) разобраться, а не в DLL лезть.

Вообще никаких проблем с добавлением ресурсов в DLL
вот код проекта (очень сложный)

Это я делал библиотеку иконок для Рабочего стола. Почему не просто назначить иконку? Потому что в этом случае при очистке/наполнении Корзины не происходит динамическое обновление иконки Корзины. Да и с DLL как-то изящнее, что ли


а в программе вытянуть ресурс - как два пальца об асфальт
LoadLibrary()
LoadFromHInstanceName() Обшибся. метод LoadFromResourceName()
Есть у любого наследника TGraphic кстати, не знаю с какой версии, но Delphi научился самостоятельно добавлять ресурсы в проект
создаем проект библиотеки:

компилируем, получаем DLL с ресурсами.

Заметил интересную особенность. Если в качестве Resource Identifier вписать, к примеру 100 , то есть строку, состоящую только из цифр, то в выходном ресурсном файле она станет числовым идентификатором, доступ к которому осуществляется через LoadFromResourceID При нажатии на кнопку картинка из dll библиотеки выводится в Image на форме.
Как сделать,чтобы в dll библиотеке было несколько картинок и при каждом нажатии выводились ??
Как сделать,чтобы в dll библиотеке было несколько картинок подставить нужный идентификатор картинки в
TResourceStream.Create(h, 'Image1', RT_RCDATA); Куда именно нужно подставить?
Я подставляю в разные места этого кода,не работает, выводит последнюю картинку и дальше не двигается.
Я добавила эту строку , как вы и сказали , заменив Image1 на Image2, как в dll у меня есть эти два изображения я ж привёл образец кода. только вместо loadfromstream у меня loadfromresourcename, но суть та же.
там и картинка программы есть, и картинка с именами ресурсов. сопоставить одно с другим - всё станет ясно Здравствуй Arcor,вопрос по твоему коду. При нажатии на кнопку картинка из dll библиотеки выводится в Image на форме.
Как сделать,чтобы в dll библиотеке было несколько картинок и при каждом нажатии выводились ??

и вытаскивай их

Посмотри пожалуйста, что нужно изменить? Почему-то не работает. Спасибо большущее тебе заранее.

missfortune, всё должно работать - в одну и ту же Image1 загружаются последовательно первая и вторая картинки из ресурса. Естественно, отображаться будет та, которая загружена последней.

только i глобальная надо, в этом случае ты не увидишь первую картинку

увидишь сразу вот эту

если это клики по кнопке, тогда

Спасибо за твою помощь. Наверное как и говорил AzAtom не получится все картинки выводить в один Image1. Я сделала 2 Image и при нажатии на кнопку выводится мои 2 изображения в них

Решение

missfortune, почему не получится? Глобальная переменная i, после увеличения на единицу проверка:

Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?
Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?

Как вытянуть имя картинки из picturebox?
У меня есть flowlayoutpanel, которая заполняется PictureBox с картинками, можно ли как-то достать.

Если вам уже приходилось заменять значки папок, то вы, стало быть, в курсе, что при этом система предлагает поискать альтернативный значок в файле SHELL32.dll, расположенный в папке system32. Спрашивается, почему Windows хранит иконки именно в DLL-файлах, а не в отдельных папках и что вообще представляют собой файлы DLL?

Файлы DLL или Dynamic Link Library они же динамически подключаемые библиотеки представляют собой контейнеры, нечто вроде архивов, в которых могут храниться различные используемые исполняемыми файлами EXE компоненты, например, фрагменты кода или графические элементы, в нашем случае иконки. Использование DLL в Windows основано на принципе модульности, причем каждая отдельная совместимая библиотека может быть подключена к тому или иному приложению, тем самым расширяя его функциональные возможности.

Вам может быть интересно: Не работает кнопка пуск и панель задач



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




Нажмите «OK» и в левой колонке утилиты у вас появятся две папки Icon Image и Icon Directory, в них и будут храниться ваши иконки.


Если хотите, можете попробовать поиграть с настройками встроенного редактора иконок, изменив метод интерполяции или добавив задний фон.


Точно таким же образом одна за другой в библиотеку добавляются прочие иконки. Чтобы сохранить результаты работы, жмем кнопку Save – библиотека будет сохранена в каталог, из которого вы брали иконки.


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

Как сделать значок (.dll)?
Нарисовал картинку, а теперь хочу что-бы она стала значком .dll
Сбасибо.
DOS. Синей пеленой экран заполнил чистый DOS
Мышь. Стала вдруг квадратной, потеряла форму мышь.
Я разбил окно, девяностопятое мастдайное окно,
И поставил DOS, и тогда увидел: Это счастье, — вот оно.

никак. Где ты видел длл с иконкой?
/
/
/
Тьфу! Исправляюсь. С нестандартным значком где ты видел длл?

а ты Windows видел?


во первых картинка должна быть формата ICO
для добавления иконок в dll нужен редактор ресурсов

Каждый чилавек пасвоему праф. а памоему НЕТ!

Блин, не совсем про ресурсы, я думаю, идёт речь. Как я понял идёт речь про главную иконку. Т.е. у того же ворда есть иконка в виде W, когда смотришь на екзешник в проводнике - видно этот значок. Главная иконка бывает у приложений, но никак не у длл. В принципе, в ресурсах длл может быть иконка с ID "MAINICON", но проводник, или тот же тоталкомандер не поймёт, что эту иконку следует отображать как значок приложения. Потому прилепить значок к длл не получится. Вот.

Может я просто не так выразился.

ЗЫ: Виндовс видел, зайди в систем32 и посмотри: у ВСЕХ длл стандартные значки.
ЗЗЫ: Ещё тут минус влепил!

Не подскажешь ссылку, где можно програмку скачать, чтобы из картинки можно было сделать значок.

P. S. Есть екзешник. В свойствах, которого я нажал кнопку "Сменить значок", а потом "Обзор". Не видит .ico . Только .dll.

PP. S. Когда я нарисовал картинку (20*20) (видел такие значки), а потом с помощью QB перевёл в .ico, то машина пишет под названием блёклыми буквами не Значок, а Файл "ico", то есть не поймёт, что это за файл.

DOS. Синей пеленой экран заполнил чистый DOS
Мышь. Стала вдруг квадратной, потеряла форму мышь.
Я разбил окно, девяностопятое мастдайное окно,
И поставил DOS, и тогда увидел: Это счастье, — вот оно.

Воот. Сформулирован вопрос. Будет ответ.

Для замены ресурсов есть Restorator и ResHacker. Можно заменить ресурс сразу у приложения. Так проще будет.

ПС: А про экзешник ли вообще речь идёт. По тому, что сказал iff: "нажал кнопку "Сменить значок"", речь вообще идёт об ярлыке.

Добавлено через 5 минут и 54 секунды
Как работает Restorator или ResHacker?

DOS. Синей пеленой экран заполнил чистый DOS
Мышь. Стала вдруг квадратной, потеряла форму мышь.
Я разбил окно, девяностопятое мастдайное окно,
И поставил DOS, и тогда увидел: Это счастье, — вот оно.

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.
  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить


Глас Винграда:


Глас Философии:

[ Время генерации скрипта: 0.1179 ] [ Использовано запросов: 20 ] [ GZIP включён ]

Значки из dll

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

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

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

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

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

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

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

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

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

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

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

Resource_Hacker

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

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

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

Иконки в DLL

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

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

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

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

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

Файл DLL

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

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

Читайте также: