Что нового

Компиляция AU3 скрипта с иконкой от EXE

kalpak44

Новичок
Сообщения
45
Репутация
1
нужен скрипт который бы мог автоматически компилировать скрипт в exe в качестве иконки чтобы брал иконку с другого exe.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Я, как всегда, не понимаю смысл слова "автоматически" в данном контексте...
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
прошу прошения, имел виду чтобы компиляция выполнялась из скрипта.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Для этого можно взять компилятор AutoIt'a и передавать ему параметры через командную строку
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
если использовать файл exe в качестве иконки выдает ошибку, пробовал даж в начале сменить расширение екзешника в ico, резульат тот же. :'( :'( :'(
 

Microteam

Осваивающий
Сообщения
74
Репутация
34
А ты вот такие действия сделай:
Скачай Resource Hacker, возьми от него токо эксешнег(reshacker.exe), и вызывай его из скрипта такой командой:
Код:
-extract ExeFileName, ResourceAddress, ResourceType, ResourceName,

Например:
Код:
ResHacker.exe -extract explorer.exe, %TEMP%\lol.ico, ICON , bitmap, 100,

Где:
ExeFileName: оригинальный файл, который мы хотим редактировать в Resource Hacker
ResultingFileName: название, которое мы хотим дать, когда мы сохранили файл.
ResourceAddress: адрес ресурса (например местоположение точечного рисунка на жестком диске).
ResourceType: тип ресурса (например, такие как BITMAP, AVI, и т.д.).
ResourceName: название ресурса (например, такие как 131, 1020, и т.д.).

Извлек икону в нужном пути ну и потом уже не трудно:
Код:
Aut2Exe /in скрипт.au3 /out программа.exe /gui /icon иконка /x86


---
Ну может я изобрел велосипед, но с таким методом можно не только извлекать ресурсы но и добавлять и изменять, вот команды:
Код:
-add ExeFileName, ResultingFileName, ResourceAddress, ResourceType, ResourceName,
-addskip ExeFileName, ResultingFileName, ResourceAddress, ResourceType, ResourceName,
-addoverwrite ExeFileName, ResultingFileName, ResourceAddress, ResourceType, ResourceName,
-modify ExeFileName, ResultingFileName, ResourceAddress, ResourceType, ResourceName,
-extract ExeFileName, ResourceAddress, ResourceType, ResourceName,
-delete ExeFileName, ResultingFileName, ResourceType, ResourceName

Думаю вы поймете их назначение)))) :smile:


Добавлено:
Сообщение автоматически объединено:

Надеюсь вы вообщем поняли мой "алгоритм") Ресурс Хакером извлекаем иконку в какую нить папку, а потом просто подаем компилятору путь до иконки)))

Интересно, а есть в AutoIt'e возможности для извлечения ресурсов из программ или dll библиотек))))
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
ответ весьма подходящий, но по ходу у мя руки кривые и не получается, проблема в том что на одних програмах извлекается на других нет и в Log хакера пишет

Warning: Icon images cannot be manipulated directly, assumes IconGroup.

:stars: :stars:

насколько я понял тут имя ресурсов(иконок) во всех екзешниках разные?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
http://autoit-script.ru/index.php/topic,4707.0.html
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Тут случай другой. Нужно ведь скомпилировать с иконкой, а не извлечь иконку при работе скрипта. Видимо подойдёт
Код:
#AutoIt3Wrapper_Run_Before= ;процесс выполняется перед компиляцией - вы можете иметь несколько записей, которые будут выполнятся по очереди
В этой строке указать bat или cmd-файл, который с помощью ResHacker.exe сделает извлечение иконки до компиляции.

kalpak44
Для чего такие заморочки? EXE-файл меняет свои иконки? И нужно синхронизировать изменение с компиляцией?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
Тут случай другой. Нужно ведь скомпилировать с иконкой, а не извлечь иконку при работе скрипта
Так для того чтобы скомпилировать нужно сперва получить (сохранить) файл иконки.

В этой строке указать bat или cmd-файл, который с помощью ResHacker.exe сделает извлечение иконки до компиляции.
Автору темы нужно это делать из самого скрипта, т.е AutoIt скриптом компилировать другой скрипт.
 
Автор
K

kalpak44

Новичок
Сообщения
45
Репутация
1
Пасибо всем участникам, а особенно CreatoR'у


получилось наконец :laugh: :laugh: :laugh: Во чего нахимичил
Код:
$AU3 = @ScriptDir & '\Script.au3'
$AUT2EXE = 'Aut2exe.exe'
$EXE = @ScriptDir & '\Proga.exe'
$ICON ="Icon.ico"
_icon_extracter($EXE)
Run($AUT2EXE & ' /in ' & $AU3 & ' /out ' & $EXE & ' /icon ' & $ICON & ' /comp 0 /nopack')

Func _icon_extracter($source)
Dim $aIcon[3] = [16, 32, 48]

For $i = 0 To 2
    $aIcon[$i] = _WinAPI_Create32BitHICON(_WinAPI_ShellExtractIcon(@ScriptDir & '\' & $source, 0, $aIcon[$i], $aIcon[$i]), 1)
Next
_WinAPI_SaveHICONToFile(@ScriptDir & '\Icon.ico', $aIcon)
For $i = 0 To 2
    _WinAPI_DestroyIcon($aIcon[$i])
Next
EndFunc

и тд и тп :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:
канеш подредактировать еще можно, но ..... лень матушка :whistle: :whistle:
 
Верх