Что нового

[Элементы GUI] Как совместить графику со скриптом ?

joR1k

Новичок
Сообщения
9
Репутация
0
Добрый день, всем пользователям данного ресурса.
Начал углубляться в Autoit и как водится возникли вопросы и проблемы.
Знаю, что новичком мало где любят из-за того, что приходиться повторять уже 200 раз пройденый материал.
У меня возникла такая проблема. Есть скрипт смены иконок. Авот как к нему прикрутить графический интерфейс ?
Код:
Func sChangeIcon($sFile , $sFileFinal , $sIcon)

         Local $ResourceData , $sChangeValue , $OverWrite
         $sResource = @TempDir & '\ResHack.exe'
         $OverWrite = '-addoverwrite '
         $sChangeValue = 'ICONGROUP,MAINICON,0'
         FileWrite($sResource , BinaryToString( $Data()))
         sShell( $sResource, $OverWrite & $sFile & ',' & _
         ' ' & $sFileFinal & ',' & ' ' & $sIcon & ',' & $sChangeValue )
         Sleep(250)
         FileDelete($sResource)

EndFunc

Func sShell($Path , $Parameter)
         Local $Shell = ObjCreate("shell.application")
         $Shell.ShellExecute($Path ,$Parameter , "")
EndFunc

Чтобы была функция выбора .exe файла и иконки. Ну и естественно кнопка сменить
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Примерно так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("НАЗВАНИЕ", 267, 141, -1, -1, -1, $WS_EX_TOOLWINDOW)
$Input1 = GUICtrlCreateInput("", 8, 23, 209, 21)
$Input2 = GUICtrlCreateInput("", 8, 69, 209, 21)
$Button1 = GUICtrlCreateButton("...", 224, 21, 35, 25)
$Button2 = GUICtrlCreateButton("...", 224, 67, 35, 25)
$Label1 = GUICtrlCreateLabel("Иконка:", 8, 8, 45, 14)
$Label2 = GUICtrlCreateLabel("Файл:", 8, 54, 36, 14)
$Button3 = GUICtrlCreateButton("Сменить", 72, 98, 123, 33)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$Icon = FileOpenDialog('', '', 'ICO File (*.ico)', '', '', GUICreate(''))
			If @error Then ContinueLoop
			GUICtrlSetData($Input1, $Icon)
		Case $Button2
			$Icon = FileOpenDialog('', '', 'EXE File (*.exe)', '', '', GUICreate(''))
			If @error Then ContinueLoop
			GUICtrlSetData($Input2, $Icon)
		Case $Button3
			sChangeIcon...
	EndSwitch
WEnd

Func sChangeIcon($sFile , $sFileFinal , $sIcon)

         Local $ResourceData , $sChangeValue , $OverWrite, $Data
         $sResource = @TempDir & '\ResHack.exe'
         $OverWrite = '-addoverwrite '
         $sChangeValue = 'ICONGROUP,MAINICON,0'
         FileWrite($sResource , BinaryToString( $Data()))
         sShell( $sResource, $OverWrite & $sFile & ',' & _
         ' ' & $sFileFinal & ',' & ' ' & $sIcon & ',' & $sChangeValue )
         Sleep(250)
         FileDelete($sResource)

EndFunc

Func sShell($Path , $Parameter)
         Local $Shell = ObjCreate("shell.application")
         $Shell.ShellExecute($Path ,$Parameter , "")
EndFunc
 
Автор
J

joR1k

Новичок
Сообщения
9
Репутация
0
Спасибо огромное за помощь
Но когда на SciTE пробую проверить. то выдает следущее:
13f6ead08717.png
В чем ошибка ?
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
joR1k
в том, что там нужно вписать нужную информацию в скобках.. автор предложил вариант, но не готовое решение
 
Автор
J

joR1k

Новичок
Сообщения
9
Репутация
0
А к примеру какую информацию. Я в этом не оч понимаю. Извеняюсь за нубство
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
joR1k
Какой то сомнительный скрипт у вас. Есть команда
Код:
ResHacker.exe -modify "путь_к_.dll", "путь_сохранения_.dll", "путь_иконке_.ico, IconGroup,101,
Просто выполняется функция Run. Подробнее читайте справку по ResHacker и AutoIt3.
 
Автор
J

joR1k

Новичок
Сообщения
9
Репутация
0
В чем же он сомниетльный?
Я не могу понять а где взять эти dll. и для чего они нужны ?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
joR1k
В чем же он сомниетльный?
В том, что используются какие то объекты, когда всё это записывается в одну строчку.

Я не могу понять а где взять эти dll. и для чего они нужны ?
Просто прочтите справку к ResHacker.exe, там есть раздел "Command Line Scripting:". При чём здесь dll, там может быть любой файл содержащий ресурсы, будь то exe, apl, ocx, ax, cpl.
 
Автор
J

joR1k

Новичок
Сообщения
9
Репутация
0
Обязательно почитаю. Спасибо за совет.
А этот скрипт как реализовать ?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
joR1k
Один вопрос - одна тема. Отвечать никто не будет, так что удаляй пост и создавай тему или жди предупрежднеие. Не забудь что на сайте работает поиск.
 
Верх