Não tenho certeza de como isso funciona com #InputLevel
.
Uma solução pode ser usar uma chamada de função comum de ambos os scripts carregados por meio de uma instrução #Include
. Teria que detectar se o script2 está em execução e não executar se o script2 estiver em execução.
Script2 também teria que deixar a chave k
passar para Script1, então scrolllock & k
funcionaria no Script1.
O código abaixo é um exemplo, não testado - tenho certeza de que há maneiras mais elegantes de resolver isso, mas pode funcionar ou aproximá-lo. Não é exatamente como eu iria codificá-lo, mas pretende ser mais um exemplo.
; -----------------------
; Script1.ahk
; -----------------------
#Persistent
k::functionk(A_ScriptName)
scrollock & k::Click
#Include functionCalls.ahk
; -----------------------
; Script2.ahk
; -----------------------
#Persistent
Script2Running("Set", True) ; auto-execute when script2 starts
OnExit(Script2Exit)
return
~k::functionk(A_ScriptName) ; tilde should let k pass through to script1
Script2Exit()
{
Script2Running("Set",False)
}
#Include functionCalls.ahk
; -----------------------
; functionCalls.ahk
; -----------------------
functionk(callersScriptName)
{
if (callersScriptName="script1.ahk") and not script2Running()
{
msgbox script1
; add code as needed
}
else if (callersScriptName="script2.ahk")
{
msgbox script2
; add code as needed
}
else
msgbox Unrecognized script name: %callersScriptName%
}
Script2Running(SetOrRead := "", newState := false)
{
static running := false
if (SetOrRead="Set")
running := newState
return running ; same as 'return %running%', see help topic on return
}