Estou tentando mover meu cursor verticalmente para baixo até chegar à parte inferior do monitor (1500) e, em seguida, envolvê-lo movendo-o de volta à posição inicial.
O problema que estou tendo é que toda vez que o wheeldown é acionado, o MouseGetPos também é reavaliado.
Posso tentar avaliar MouseGetPos quando o script for executado pela primeira vez, mas ainda assim não seria preciso, pois o script poderia ser executado por uma hora antes que a roda para baixo fosse acionada.
Aqui está o meu código até agora, obrigado!
WheelDown::
MouseGetPos, xpos1, ypos1
xpos2 := xpos1
ypos2 := ypos1
MouseMove, % xpos2 +0, % ypos2 +90
if (ypos2 > 1500)
MouseMove, %xpos1%, %ypos1%
Return
esc::ExitApp
Outras abordagens podem ser possíveis, mas a resposta mais simples provavelmente definirá explicitamente qualquer que seja a "posição inicial" para a qual você deseja rolar de volta. Um método de fazer isso é monitorar os estados das chaves ao chamar
WheelDown::
:ex. cursor_looping.ahk
Resumindo, com o script de exemplo acima, se você pressionar eg F7e rolar para baixo uma vez com a roda do mouse, a posição original do mouse será armazenada em
initial_y_position
. Este valor é persistente. Ele não será substituído, a menos que você:Pressione F7e role para baixo novamente para definir uma nova posição (a posição anterior não precisa ser apagada).
Pressione, por exemplo F4, e role para baixo para voltar ao comportamento padrão (ou seja, o mouse permanecerá na parte inferior da tela, não importa quanto tempo você role).
Feche o roteiro.
Ressalvas
Embora o método F-Key/Scroll down seja bastante intuitivo de usar na minha opinião, lembre-se de que ele é executado para cada rolagem. Você precisa liberar ex. F7após a primeira rolagem para que as coisas funcionem corretamente (supondo que o mouse já esteja localizado na
y
posição desejada).Para limpar uma posição, lembre-se de que você precisa pressionar ex. F4e role para baixo pelo menos uma vez. Vários pergaminhos não prejudicarão nada neste caso.
GetKeyState()
funciona apenas para teclas únicas, portanto, suas opções de teclas para monitorar podem ser limitadas.ypos > 1500
é bastante importante. Isso pode afetar o funcionamento do script. Por exemplo, se o Windows estiver ampliando sua área de trabalho, uma resolução de 1920 x 1080 pode, na verdade, oferecer apenas ~ 800 pixels de distância de rolagem em tamanho de 150% para que a quebra funcione corretamente (por exemplo,ypos > 800
nãoypos > 1080
). Nesse caso, seria impossível rolar para 1080 e, portanto, essa seção nunca seria acionada.Referências