Что нового

Как в компилированный файл вложить значки с последующим их использованием

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Всем привет. Есть компилированный файл autoit, который висит в трее, перехватывает сочетания клавиш и выполняет какие-то действия. Нужно сделать так, чтобы при различных действиях сменялись иконки в трее, но при этом эти иконки должны быть в скомпилированном файле.
При помощи функции Fileinstall можно влить иконки в компилированный файл. Но как в функции TraySetIcon указать местоположение иконки в собственном компилированном файле?
Как вариант при старте можно иконки извлекать в папку Temp и потом уже устанавливать их в трей...но этого очень не хочется делать.

Как в компилированный файл вложить значки с последующим их использованием?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Yegorich_555,
Иконки

Пример простой.
Код:
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Ico\Script.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\201.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\202.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\203.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\204.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\205.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\206.ico
#AutoIt3Wrapper_Res_Icon_Add=Ico\207.ico
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

Opt('TrayMenuMode', 3)

Global $aIcon[8]

If @Compiled Then
	For $i = 1 To 7
		$aIcon[$i] = 200 + $i
	Next
Else
	TraySetIcon(@ScriptDir & '\Ico\Script.ico', 0)
	For $i = 1 To 7
		$aIcon[$i] = @ScriptDir & '\Ico\' & 200 + $i & '.ico'
	Next
EndIf

HotKeySet('!1', '_Start') ;Alt+1
HotKeySet('!2', '_End') ;Alt+2
HotKeySet('!{Esc}', '_Exit') ;Alt+Esc

While 1
	If $aIcon[0] Then
		If @Compiled Then
			TraySetIcon(@ScriptFullPath, $aIcon[$aIcon[0]])
		Else
			TraySetIcon($aIcon[$aIcon[0]], 0)
		EndIf
		$aIcon[0] += 1
		If $aIcon[0] > 7 Then $aIcon[0] = 1
	EndIf
	Sleep(100)
WEnd

Func _Start()
	If Not $aIcon[0] Then $aIcon[0] = 1
EndFunc   ;==>_Start

Func _End()
	If Not $aIcon[0] Then Return
	$aIcon[0] = 0
	If @Compiled Then
		TraySetIcon('')
	Else
		TraySetIcon(@ScriptDir & '\Ico\Script.ico', 0)
	EndIf
EndFunc   ;==>_End

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Папка Ico должна быть в одной папке со скриптом.

Сложнее смотрите здесь: Анимированная иконка в системном трее
 
Верх