![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| artem1987 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
есть ли возможность сравнивать - переменные типа TIcon?
хэндлы естественно у них разные! --------------------
Don't ask me why, ask me how. |
|||
|
||||
| Тьма |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 22.1.2005 Где: Украина, Винница Репутация: нет Всего: 4 |
первое, что пришло в голову: попробуй сделать Icon.SaveToStream(SomeStream) для первой и для второй (естественно в разные Стримы) и сравнить их.
ИМХО это тебе поможет http://forum.vingrad.ru/index.php?showtopic=109140 Это сообщение отредактировал(а) Тьма - 30.8.2006, 17:52 -------------------- Vir magni ingenii |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Добавлено @ 17:54 Ага и мне тоже -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| artem1987 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
наверное то что мне нужно но возникает другая задача
я вот получаю иконки из регистра ,прог ассоциированых с типом файла и те иконки что в винде исп для незнакомых типов хочу заменить на свои короче надо как то определить что это именно та иконка а потом наверное ост с ней сравнивать вышеуказаным методом... только как? --------------------
Don't ask me why, ask me how. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Так это еще поще, в реестре обычно указывается путь к иконке и ее номер. Значит нужно просто проверять пути, если путь к иконке не указан совсем и не указана программа для открытия, значит брать себе расширение. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| artem1987 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
я получаю переменную типа HIcon где там искать?
--------------------
Don't ask me why, ask me how. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| artem1987 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
отсюда
--------------------
Don't ask me why, ask me how. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Вот, набросал код, но нужно проверить на других машинах.
На моей машине дефолтная икона под номером 3.
Добавлено @ 10:47 P.S. Не сравнивать по хэндлу! Хэндл, полученный по вышеприведённому коду будет отличаться! |
|||
|
||||
| artem1987 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
'', 0, FileInfo, Sizeof(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON-->это параметры для иконки unknown file?
напиши по коменту на обе строки пожалуста а с хэндлом понятно,в этом и есть его фишка...наверное. --------------------
Don't ask me why, ask me how. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Нет, эти параметры для получения системного ImageLista.
Потом берём из него икону с индексом 3. |
|||
|
||||
| artem1987 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
получается в имадж листе должна лежать структура типа TIcon где
TIcon.Handle : HIcon . не так?причем по моему коду получаем хэндл иконки для каждого приходящего экстенжон но перед эти надо создать структуру типа TIcon
потом присвоить туда хэндл нужной нам для работы иконки
а потом уже xIcon можно пихать в любой imagelist чтоб потом по индексу использовать, например в VT поправь, если я глючю. а че тогда с NOIcon?и ImageList_GetIcon? --------------------
Don't ask me why, ask me how. |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Не путай виндовый ImageList и дельфийский.
Также иконку виндовую и дельфийский TIcon. Для работы с иконой на уровне дельфи мы и создаём объект TIcon. xIcon.Handle:=GetAssociatedIcon(..extension..,true); Это по сути хитрый ход, который грузит системную икону в дельфийский класс. NoIcon - это я её так назвал, потому что это дефолтная икона для файлов, не имеющих не своей, ни ассоциированной иконы. А ImageList_GetIcon - это апишная функция для получения хэндла иконы из системного имаджлиста. Опять же повторюсь - системный имаджлист и системная икона - не то же самое, что дельфийские аналоги. Добавлено @ 12:56
У винды работа построена на хэндлах, а не на классах. Пусть тебя не обманывает строка xIcon.Handle:=GetAssociatedIcon Это явный пример инкапсуляции. На самом деле, физически нет никакого присваивания. Реально происходит загрузка иконки, а не запоминание её хэндла. |
|||
|
||||
| artem1987 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 18.7.2006 Где: Калининград Репутация: нет Всего: нет |
это я понял , я уже 'шустрый', имел в виду другое как мне е| сравнивать с моими делфийскими или HIcon можно сравнивать?
ааа... у меня не работает, думал твоя , че приподключить надо не подскажешь? --------------------
Don't ask me why, ask me how. |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Как сравнивать - тебе уже показали.
А не работает,вероятно потому, что не подключены CommCtrl или ShellAPI. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |