Что нового

[Автоматизация] Запуск нескольких функций по одному HotKeySet

oneDmitry

Чайник
Сообщения
55
Репутация
3
как сделать что один HotKey запускал 2 функции, и вообще возможно ли это ?
если можно приведите пример
 

killbond

Осваивающий
Сообщения
96
Репутация
32
Re: [Автоматизация] HotKey и 2 функции

Рекурсия в данном случае поможет ;)
Код:
HotKeySet ( "{SPACE}" ,"FunctionParent" ) ; Пробел

Func FunctionParent ()
	ChildFunction_1 ()
	ChildFunction_2 ()
	ChildFunction_3 ()
EndFunc

Func ChildFunction_1 ()
	MsgBox(0,"","ChildFunction_1")
EndFunc

Func ChildFunction_2 ()
	MsgBox(0,"","ChildFunction_2")
EndFunc

Func ChildFunction_3 ()
	MsgBox(0,"","ChildFunction_3")
	exit
EndFunc

While 1
WEnd
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Автоматизация] HotKey и 2 функции

oneDmitry
Предупреждение
Неинформативное название темы!


killbond [?]
Рекурсия в данном случае поможет
Рекурсия это когда функция для нахождения значения вызывает себя же но с другими значениями. Например нахождение факториала/
а в твоем случае, рекурсии нет ;)
Код:
$N = 10
MsgBox(0, $N & '!', _Fact($N))
Func _Fact($N)
   If $n = 0 OR $n = 1 Then Return 1
   Return $n * _Fact($n - 1)
EndFunc
 
Автор
O

oneDmitry

Чайник
Сообщения
55
Репутация
3
Re: [Автоматизация] HotKey и 2 функции

извиняюсь за неинформативность, и с вопросом разобрался своими силами
 

killbond

Осваивающий
Сообщения
96
Репутация
32
Re: [Автоматизация] Запуск нескольких функция по одному HotKeySet

Рекурсия это когда функция для нахождения значения вызывает себя же но с другими значениями. Например нахождение факториала/
а в твоем случае, рекурсии нет ;)
Так и знал! :smile: Ну не спец я терминами кидаться... спасибо, в следующий раз учту...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Автоматизация] Запуск нескольких функция по одному HotKeySet

oneDmitry
1. Если вопрос исчерпан, не забываем отмечать тему решенной ;)
2. Ни в коем случае не воспрещается выкладывать решение, для других страждущих решить такую же или близкую проблему, если конечно решение отличается от тех, что уже приведены в данной теме
 
Автор
O

oneDmitry

Чайник
Сообщения
55
Репутация
3
этот вопрос я решим вот таким же примером
Код:
HotKeySet ( "{SPACE}" ,"FunctionParent" ) ; Пробел

Func FunctionParent ()
    ChildFunction_1 ()
    ChildFunction_2 ()
    ChildFunction_3 ()
EndFunc

Func ChildFunction_1 ()
    MsgBox(0,"","ChildFunction_1")
EndFunc

Func ChildFunction_2 ()
    MsgBox(0,"","ChildFunction_2")
EndFunc

Func ChildFunction_3 ()
    MsgBox(0,"","ChildFunction_3")
    exit
EndFunc

While 1
WEnd


ток я до него сам додумался =)
 

seriych

Чайник
Сообщения
18
Репутация
0
А как запустить по хоткею функцию с параметром?
То есть мне нужно сделать несколько хоткеев, каждый их которых вызывает одну и ту же функцию с разными параметрами.
 

killbond

Осваивающий
Сообщения
96
Репутация
32
А как запустить по хоткею функцию с параметром?
То есть мне нужно сделать несколько хоткеев, каждый их которых вызывает одну и ту же функцию с разными параметрами.
Можно так:

Код:
HotKeySet ( "{SPACE}" ,"FunctionParent1" ) ; Пробел
HotKeySet ( "{ENTER}" ,"FunctionParent2" ) ; Ввод

Func FunctionParent1 ()
	ChildFunction ("Пробел")
EndFunc

Func FunctionParent2 ()
		ChildFunction ("Ввод")
EndFunc

Func ChildFunction ($Parametr)
    MsgBox(0,"","ChildFunction_1" & @CRLF & $Parametr)
EndFunc

While 1
WEnd



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

или так:

Код:
#Include <Misc.au3>

Func ChildFunction ($Parametr)
    MsgBox(0,"","ChildFunction_1" & @CRLF & $Parametr)
EndFunc

While 1
	Select
	Case _IsPressed (20) = 1
		If _IsPressed (12) = 1 Then
			ChildFunction ("Пробел + Alt")
		EndIf
	Case _IsPressed (20) = 1
		If _IsPressed (11) = 1 Then
			ChildFunction ("Пробел + Ctrl")
		EndIf

	EndSelect 
WEnd


ЗЫ: В справке, в описании функции "_IsPressed" есть описание значений клавиш
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 159
Репутация
2 329
seriych [?]
А как запустить по хоткею функцию с параметром?
Пример обработчика:

Код:
Global $aHotKeys_Data[1][3]

_HotKeySet("{F2}", "_MyFunc", "Some Params for MyFunc")
_HotKeySet("{F3}", "_MyFunc", "Some other Params for MyFunc")
_HotKeySet("^+e", "_Exit", "Now we exit the script")

While 1
	Sleep(100)
WEnd

Func _MyFunc($vParams)
	MsgBox(64, 'Title', $vParams)
EndFunc

Func _Exit($vParams)
	Exit MsgBox(64, 'Title', $vParams)
EndFunc

Func _HotKeySet($sKey, $sFunc="", $vParams="")
	If @NumParams = 1 Then
		Local $aTmp[1][3]
		
		For $i = 1 To $aHotKeys_Data[0][0]
			If $aHotKeys_Data[$i][0] <> $sKey Then
				$aTmp[0][0] += 1
				ReDim $aTmp[$aTmp[0][0]+1][3]
				$aTmp[$aTmp[0][0]][0] = $aHotKeys_Data[$i][0]
				$aTmp[$aTmp[0][0]][1] = $aHotKeys_Data[$i][1]
				$aTmp[$aTmp[0][0]][2] = $aHotKeys_Data[$i][2]
			EndIf
		Next
		
		$aHotKeys_Data = $aTmp
		Return 1
	EndIf
	
	$aHotKeys_Data[0][0] += 1
	ReDim $aHotKeys_Data[$aHotKeys_Data[0][0]+1][3]
	$aHotKeys_Data[$aHotKeys_Data[0][0]][0] = $sKey
	$aHotKeys_Data[$aHotKeys_Data[0][0]][1] = $sFunc
	$aHotKeys_Data[$aHotKeys_Data[0][0]][2] = $vParams
	
	Return HotKeySet($sKey, "_HotKeySet_Handler")
EndFunc

Func _HotKeySet_Handler()
	For $i = 1 To $aHotKeys_Data[0][0]
		If @HotKeyPressed = $aHotKeys_Data[$i][0] Then
			Return Call($aHotKeys_Data[$i][1], $aHotKeys_Data[$i][2])
		EndIf
	Next
EndFunc
 
Верх