Извлечение иконок из *.exe и сохранение их в файл *.ico

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Извлечение иконок из *.exe и сохранение их в файл *.ico

Сообщение SAS » 21.07.2005 (Чт) 4:41

Тема и есть собственно вопрос. Однако нужно привести дополнения:
Мне нужно вытащить иконку из *.exe файла, на который ссылается ярлык (*.lnk). Определить путь к файлу и номер иконки в нем я могу:
Код: Выделить всё
'Входные параметры: strlnkPath- полный путь ярлыка
' stricoPath- полный путь файла *.ico, в который нужно сохранить иконку
sub ReadIcon (strlnkPath, stricoPath)
Set WshShell = CreateObject("WScript.Shell")
Set oShellLink = WshShell.CreateShortcut(strlnkPath)
'получаем путь к приложению , которое запускает ярлык и
'номер иконки, которую видно когда смотрим на ярлык в Explorere:
strIconNo=oShellLink.IconLocation
'дальше нужно как-то сохранить иконку в файл  stricoPath
'
'...как это сделать?
'
end sub

а вот как именно получить иконку и сохранить ее в файл?
Видимо без API не обойтись?
Да, еще: мне нельзя использовать всякие элементы управления типа PictureBox и пр. для промежуточного размещения иконки, так как я пишу сценарий на VBScript для Windows Script Host, однако использование функций API допустимо, я использую обертку для обращения к ним.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Извлечение иконок из *.exe и сохранение их в файл *.ico

Сообщение tyomitch » 21.07.2005 (Чт) 4:56

SAS писал(а):Видимо без API не обойтись?

Обойтись.

Только недавно я рекламировал GSerg-у мою выковыривалку иконок: ftp://cs.usu.edu.ru/util/IcoCur/
Они не сохраняет их в .ico-файлы, а только показывает, но дописать сохранение там тривиально.
В текстовике рядом с прогой лежит полное описание всех форматов иконок на случай, если кто-то решится эту прогу дописывать.
Изображение

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Re: Извлечение иконок из *.exe и сохранение их в файл *.ico

Сообщение SAS » 21.07.2005 (Чт) 7:26

Спасибо. Проект Хороший. Я сегодня уже его щупал, просматривал код, однако у меня возникают трудности с типами переменных - в VBScript тип переменных один -variant. кроме того я не знаю чем в VBScript заменить Get #1 и как быть с Private Type.
Кстати не могу понять для чего используется функция
Function OleTranslateColor Lib "oleaut32"

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2005 (Чт) 19:26

OleTranslateColor используется, чтобы узнать цвет формы (я мог бы использовать и GetSysColor, но так интереснее :-))
Get #1 заменяется вызовами FSO.
Private Type - мда... Не помню, вроде бы в VBS действительно структур нет :-(
Изображение

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 22.07.2005 (Пт) 6:47

tyomitch писал(а):Get #1 заменяется вызовами FSO.

А можно поподробнее?
tyomitch писал(а):Private Type - мда... Не помню, вроде бы в VBS действительно структур нет :-(

А можно как то обойтись без структур?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.07.2005 (Пт) 7:01

SAS писал(а):
tyomitch писал(а):Get #1 заменяется вызовами FSO.

А можно поподробнее?

Примерно http://groups-beta.google.com/group/mic ... 44b89966f1
SAS писал(а):
tyomitch писал(а):Private Type - мда... Не помню, вроде бы в VBS действительно структур нет :-(

А можно как то обойтись без структур?

Можно, но тяжело - много надо переписывать... А ты не можешь весь этот код скомпилировать из VB6 в ActiveX-ину и юзать её целиком?
Изображение

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 22.07.2005 (Пт) 7:46

tyomitch писал(а): А ты не можешь весь этот код скомпилировать из VB6 в ActiveX-ину и юзать её целиком?

Я бы с радостью, но к сожалению это невозможно, так как этот ActiveX должен будет устанавливаться и регистрироваться на клиентских машинах, для этого у юзеров должны быть права администратора, что для меня недопустимо.

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 05.08.2005 (Пт) 5:39

Все таки пришлось использовать апи - хотишь-не хотишь, а надо.

Для того, чтобы извлечь иконку использую ExtractAssociatedIcon. Можно ли теперь, используя полученное значение handle иконки, сохранить ее в файл без предварительной отправки ее в picturebox.hdc или form1.hdc?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.08.2005 (Пт) 5:58

SAS писал(а):
tyomitch писал(а): А ты не можешь весь этот код скомпилировать из VB6 в ActiveX-ину и юзать её целиком?

Я бы с радостью, но к сожалению это невозможно, так как этот ActiveX должен будет устанавливаться и регистрироваться на клиентских машинах, для этого у юзеров должны быть права администратора, что для меня недопустимо.


я конечно не знаю как у вас на фирме, наши админы позволяют устанавливать в любые директории кроме windows и programm files
а если в диру с прогой слить нужный компонент , то он отлично работает и без регистрации
проверено - сам мучился с такой траблой


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 65

    TopList