1

Тема: HTA: Icon Extract ActiveX Control

Icon Extract ActiveX Control
Позволяет использовать на веб-страницах иконки, динамически выдираемые из exe, dll, cpl файлов.
С данной страницы можно скачать весь репозитарий, включающий в себя последнюю версию контрола и исходников к нему.
В комплекте - demo.hta позволяющий легко зарегистрировать/снять регистрацию ActiveX и посмотреть его возможности.

Я использую Icon Extract в Remote Task Control для отображения иконок процессов и сервисов.

P.S. Вообще то HTA может самостоятельно извлекать иконку из exe, dll, cpl (вспомним про параметр icon в теге <hta>). Но почему то разработчики Microsoft посчитали что иконка нужна только в заголовке окна приложения

2

Re: HTA: Icon Extract ActiveX Control

Как всегда большой респект, mozers! А Вы не пробовали LoadPicture? Или может быть есть фокусы с ListView?

Может быть вообще имеет смысл  написать некий icon extractor на скриптовом языке?)

3

Re: HTA: Icon Extract ActiveX Control

2JSman
И с каких пор мы на Вы? Picture, ListView - это все VB контролы. Я наоборот хотел по возможности не использовать VB поэтому все функции написаны на WinAPI.
Icon Extractor на VBS уже написан. Но поскольку в VBS нет функций по извлечению иконок, автор побайтно перебирает содержимое PE файла, находит секцию ресурсов, а в ней иконки и так же, буквально вручную извлекает их. Памятник ему можно поставить за этот скрипт (представляете сколько литературы надо было перелопатить чтобы ТАКОЕ написать!) Но для динамической подгрузки (как у меня) он не подходит. Пробовал - чересчур медленно и да и иконки он порой не находит (видимо какие то компиляторы их вставляют не туда куда положено).

4

Re: HTA: Icon Extract ActiveX Control

mozers пишет:

Но почему то разработчики Microsoft посчитали что иконка нужна только в заголовке окна приложения

Это не совсем так. Некогда MSIE поддерживал протокол sysimage, позволяющий отобразить значок из exe-файла по его номеру:

<img src="sysimage://C:\WINDOWS\regedit.exe,2">

(номер значка необязательный; кроме номера можно было указать размер, что-то вроде "SmallImage" или "SmallIcon" и т.п.).

Для остальных типов файлов он позволял показать значок файла как в Проводнике с учётом не только расширения его имени, но и IconHandler'ов.
Для *.dll, *.ocx,.. он действовал как в общем случае, но подозреваю, что если бы в реестре (хотя бы временно и лишь для текущего пользователя) для этих типов файлов указать не фиксированный путь к значку, а "%1" (как для *.exe), то и для них можно было бы отображать содержащиеся в них значки...

По соображением безопасности (по событиям onload, onerror можно было проверить наличие файла на компьютере пользователя) поддержка протокола в XP_SP2 была прекращена.

mozers пишет:

И с каких пор мы на Вы?

Надо взять на вооружение.

5

Re: HTA: Icon Extract ActiveX Control

wisgest пишет:

По соображением безопасности (по событиям onload, onerror можно было проверить наличие файла на компьютере пользователя) поддержка протокола в XP_SP2 была прекращена.

Эх, как печально. Скажу честно, что я эту фразу увидел в последнюю очередь.

mozers пишет:

И с каких пор мы на Вы?

Дружище, конечно, что с тобой на Ты Все из-за стилистических особенностей форума)) А еще с наступившим праздником тебя, друг!


А вообще, получается, можно извлечь иконку, и отобразить ее через img.

6

Re: HTA: Icon Extract ActiveX Control

JSman пишет:

А вообще, получается, можно извлечь иконку, и отобразить ее через img.

А получается то как раз обратное. Нельзя! Я и через sysimage:// пробовал, и через res:// - везде глухо как в танке. Забезопасили, блин. И wisgest, как всегда, прав...
Поэтому и родился этот контрол, показывающий иконку в тегах <object>. Странно что никто такой ActiveX до меня не написал. (Я вначале весь инет излазил - ничего похожего не нашел).