Existe uma maneira de informar uma ação de autohotkey (sub-rotina) para liberar a tecla Alt
, apesar de seu gatilho ser Alt + X
?? aqui está o meu código ...
!x::
sleep 100
it does some clicks and drags here (work fine)
return
mas apesar do sleep 100
no meu código, às vezes quando pressiono o Alt + X
se eu manualmente deixar o alt pressionado o script fará um Alt Click
, ao invés de apenas um Click
que faz uma coisa completamente diferente .
Eu sei que eu poderia aumentar o atraso (sleep 100), ou configurar o AHK para esperar até que a tecla alt seja liberada, mas nada disso ajudaria porque esse script será executado várias vezes continuamente, então eu prefiro segurar o delay Alt
e pressione / baixo o x
várias vezes para executá-lo várias vezes continuamente.
Portanto, preciso de uma maneira de bloquear temporariamente o teclado ou definir o script para liberar a tecla alt, para que o autofechar não reconheça que meu dedo ainda esteja pressionando a tecla Alt
durante a execução do script várias vezes.
Eu preciso de algo parecido com isso ...
BlockInput, MouseMove
BlockInput, On
btw eu tentei os dois, eles não funcionam.
EDITAR > > > > >
Esta é a minha função para clicar e arrastar ...
AR4clickDnABmoveClickUpCDfn(ParamA, ParamB, ParamC, ParamD)
{
If AR4togWorkbMode
{
AR4workbModeFn() ; Since this fn is used to click n drag panels, after disabling AR4workbMode I won't enable it back, cuz is supposed I need to see the Panel I'm draging afterward
AR4togWorkbMode := !AR4togWorkbMode ; So AR4retWorkbMode doesn't need to be set, but AR4togWorkbMode does
Sleep 200
}
MouseGetPos X, Y
BlockInput, On
; BlockInput, MouseMove
Sleep 50
MouseMove, ParamA, ParamB
Click down
Sleep 50
Loop 10
{
MouseMove, -1, 1, 100, R
}
Sleep 40
MouseMove, ParamC, ParamD, 100
Click Up
BlockInput, Off
; BlockInput, MouseMoveOff
MouseMove %X%, %Y%
}
Então eu em outra sub-rotina !x
execute uma sub-rotina que irá clicar em um painel e chamar a função click and drag
, para arrastar o painel, é isso ...
#If WinActive("ahk_class ArtRage 3") or WinActive("ahk_class ToolWindow")
<!x::
; Lalt & x::
If !AR4togToolSetsNear ; will run the first time the hotkey is pressed cuz the toggle var is not set yet
{
Sleep 220
AR4clickDnABmoveClickUpCDfn(AR4toolSetsX0 + AR4toolSetsSetGapXX, AR4toolSetsY0 + 10, AR4toolSetsNearX, AR4toolSetsNearY)
AR4togToolSetsNear := !AR4togToolSetsNear
Sleep 20
WinActivate, ahk_class ArtRage 3
}
Else
{
Sleep 220
AR4clickDnABmoveClickUpCDfn(AR4toolSetsNearX, AR4toolSetsNearY, AR4toolSetsX0 + AR4toolSetsFarDifXX, AR4toolSetsY0 + AR4toolSetsFarDifYY)
AR4togToolSetsNear := !AR4togToolSetsNear
Sleep 20
WinActivate, ahk_class ArtRage 3
}
Return
#If
MAS, uma vez que este gatilho de sub-rotina contém Lalt
se eu pressionar e segurar Alt
enquanto pressiona e libera X
várias vezes para chamar a sub-rotina várias vezes. Então o AHK sript irá enviar Alt Click and Drag
e não apenas Click and Drag
o primeiro irá rodar de painel, enquanto o último irá movê-lo, eu quero movê-lo, não rodá-lo, mas por outro lado eu preciso pressionar e segure a tecla ALT para executar a sub-rotina várias vezes. Como posso fazer isso?
Como posso criar o AHK para ver o teclado Alt como uma versão enquanto ele é pressionado manualmente por mim?
Espero que algum super usuário possa me ajudar, obrigado.