Что нового

Управление ресурсами файла

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
AutoIt: 3.3.12.0

Категория: Вспомогательные функции

Описание: Управление ресурсами файла
Для указания типа ресурса использовать APIResConstants.au3
Список функций:
_AddRes()
_GetRes()
_RemoveRes()
_AddResBMPICO()

Код/Пример:
Код:
#include <GUIConstantsEx.au3>
#include <UDF\ResManag.au3>
$Form1 = GUICreate("Form1", 300, 150, 192, 124)
$Button1 = GUICtrlCreateButton("AddRes\Remove", 110, 50, 100, 25)
$Button2 = GUICtrlCreateButton("GetRes", 110, 100, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$pf = FileOpenDialog('', '', '(*.exe)')
			If Not @error Then
				;_AddRes($pf, 'b.png', 10, 'logo'); добавляет файл в RCDATA
				;_AddResBMPICO($pf, 'm.ico', 3, 'm', 0, 2057) ;заменяет иконки файла начиная с первой в Icon Entry
				;_AddResBMPICO($pf, 'v.ico', 3, 'v', 6, 2057)
				;_AddResBMPICO($pf, 'A.bmp', 2, 'A')
				_RemoveRes($pf,3,1) ;удаляет первую позицию ресурса файла Icon Entry
			EndIf
		Case $Button2
			$pfget = FileOpenDialog('', '', '(*.exe)')
			If Not @error Then
				$hmod = _WinAPI_LoadLibraryEx($pfget)
				$resbyte = _GetRes($hmod, 10, 'logo')
				_WinAPI_FreeLibrary($hmod)
				$nf = FileOpen(@ScriptDir & '\New.png', 18)
				FileWrite($nf, $resbyte)
				FileClose($nf)
			EndIf
	EndSwitch
WEnd

Файл: ResManag

Источник: autoit-script.ru
Автор(ы): joiner
 

Вложения

  • До.jpg
    До.jpg
    13.9 КБ · Просмотры: 31
  • После.jpg
    После.jpg
    32.5 КБ · Просмотры: 40
  • Отображение в проводнике.jpg
    Отображение в проводнике.jpg
    75.9 КБ · Просмотры: 41

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Re: [Wrapper] Управление ресурсами файла

joiner
Всё-таки оформить как UDF с полным описанием было бы лучше :smile:
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: [Wrapper] Управление ресурсами файла

Добавил описание к функциям.
Изменил пример в первом сообщении.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Re: [Wrapper] Управление ресурсами файла

joiner
Извиняюсь, но у меня нет WinAPIRes.au3 :(
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: [Wrapper] Управление ресурсами файла

для этого нужно установить последнюю версию AutoIT
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Re: [Wrapper] Управление ресурсами файла

joiner
Понятно... Но как-то совсем не хочется использовать последнюю версию. Ставил её, не понравилась (что на самом деле странно). Увы, вынужден отказаться от использования Вашего творения :smile:

OffTopic:
Не подскажите, как установить (и имеет ли это смысл?) несколько версий AutoIt?
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: [Wrapper] Управление ресурсами файла

Добавил две функции
удаление ресурсов в файле
работа с изображениями. можно менять иконку файла, иконку окна программы. список функций смотри в первом сообщении.
во вложении:
архив с библиотекой и пример
файл примера - example.au3
test_exe.au3 - подопытный файл :smile:
скомпилировать test_exe.au3, запустить его, чтобы потом можно было сравнить
запустить файл example.au3(компилировать не обязательно). в окне нажать AddRes и выбрать test_exe.exe
запустить test_exe.exe и посмотреть на результат
как обновилась структура ресурсов файла можно посмотреть в любом редакторе ресурсов
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Re: [Wrapper] Управление ресурсами файла

DarWiM сказал(а):
joiner
Понятно... Но как-то совсем не хочется использовать последнюю версию. Ставил её, не понравилась (что на самом деле странно). Увы, вынужден отказаться от использования Вашего творения :smile:

OffTopic:
Не подскажите, как установить (и имеет ли это смысл?) несколько версий AutoIt?
А вы не пробовали посмотреть содержимое WinAPIRes.au3? :smile: Почти все WinAPIххх.au3 вместе - это бывшая WinAPIEx.au3. Если бы автор использовал
Код:
#include <WinAPIEx.au3>

, позволив скрипту самому включить нужное, вопросов бы не было ни с крайним финалом, ни с 3.3.8.1.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: [Wrapper] Управление ресурсами файла

Skif_off [?]
это бывшая WinAPIEx.au3.
да, все верно, но имена некоторых функций изменились. насчет тех, которые я использую в своей библиотеке - не знаю, но изменения в именах некоторых других функций есть
================================================================================

по поводу примера, который в архиве.
компилировать test.au3 нужно без сжатия
так как после добавления в него ресурсов он не будет запускаться. сжать с помощью upx.exe можно после добавления ресурсов
то есть так
1. компилируем test.au3 без сжатия
2.интегрируем в него ресурсы
3.сжимаем при помощи upx.exe.
Код:
Run('upx.exe -9 test.exe)
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Re: [Wrapper] Управление ресурсами файла

:shok:fftop2:
joiner сказал(а):
Skif_off [?]
это бывшая WinAPIEx.au3.
да, все верно, но имена некоторых функций изменились. насчет тех, которые я использую в своей библиотеке - не знаю, но изменения в именах некоторых других функций есть
Проверил, не нашёл в 3.3.12.0
Код:
_WinAPI_GetWindowLongEx()
_WinAPI_SetWindowLongEx()
_WinAPI_Hex64()

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