Detecção da parada do cursor

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

LuanMts
Posts: 18
Joined: 24 May 2020, 00:36

Detecção da parada do cursor

09 Sep 2020, 23:47

Olá, gostaria de um script que detectasse a parada do curso e enviasse comandos apenas enquanto ele estiver parada. Por exemplo, se o cursor estiver parado envia "p + 100 ms + p" a cada 100 ms.

Agradeço a atenção!
User avatar
Gio
Posts: 1060
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Detecção da parada do cursor

14 Sep 2020, 19:51

Boa noite LuanMTS.

Para detectar a parada do mouse, você poderia criar um rotina com timer que buscaria sempre a posição atual e compararia com a posição imediatamente anterior. Caso a posição seja a mesma após um lapso de tempo desejado, isso significa que o mouse esteve parado por aquele período, e isso pode ser usado como gatilho para o envio da tecla P (por exemplo).

Exemplo:

No código abaixo, quando o mouse ficar parado por mais de 100ms, ele enviará um sinal de tecla P a cada 100ms (note que 100ms é 0,1 segundo, ou seja, é um tempo muito curto, o que significa que você essencialmente precisa estar mexendo o mouse quase o tempo todo para que o sinal de P não seja enviado).

Code: Select all

#Persistent
SetBatchLines, -1
TEMPO_PARADO := 0
SetTimer, COLETAR_MOUSE_E_TESTAR, 34
Return


COLETAR_MOUSE_E_TESTAR:
POS_X_ANTERIOR := PosX ; Primeiro, salvamos a posição imediatamente anterior.
POS_Y_ANTERIOR := PosY
MouseGetPos, PosX, PosY ; Depois, coletamos a posição atual.
If ((PosX = POS_X_ANTERIOR) AND (PosY = POS_Y_ANTERIOR)) ; E em seguida, comparamos as duas. Se forem iguais, faremos a adição do tempo do timer.
{
	TEMPO_PARADO += 34
}
else ; Mas se não forem, zeramos a contagem.
{
	TEMPO_PARADO := 0
}
If (TEMPO_PARADO >= 100) ; Em qualquer caso, sempre que a contagem exceder 100ms, enviamos o sinal de P e depois zeramos de novo a contagem.
{
	Send P
	TEMPO_PARADO := 0
}
Return
Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 2 guests