Uma ideia de como fazer

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

Moderator: Gio

guiguiiz
Posts: 15
Joined: 22 Feb 2019, 10:56

Uma ideia de como fazer

Post by guiguiiz » 11 Feb 2020, 15:26

Olá, estou me aprofundando muito no AHK, adoro fazer esse tipo de "programação" (ver a maquina fazer oque eu quero), é o seguinte:

Estou pensando o seguinte, a algum tempo atras eu pedi ajuda para que o programa clicasse randomicamente em uma parte da tela, ok, consegui fazer com que funcionasse 100% do que eu queria, porém eu sempre precisava testar varias e varias vezes para que aonde que eu quisesse clicar, ou melhor dizendo para que achasse a coordenada certa de onde eu queria , eu vi alguns videos sobre "pixelpredator", o que eu queria desse pixel predator seria, tentar encaixar em meu script, seria a parte para selecionar as coordenadas arrastando com o mouse, como se tivesse criando um quadrado na tela, ou melhor dizendo selecionando um quadrado na tela.

https://imgur.com/gallery/y7olxLx

No caso é a seleção de tela a que me refiro, oque quero fazer com isso é simples.
Que que o script , clique randomicamente no (vamos chamar assim) "Quadrado" que eu selecionei...

Seria isso possivel?

Muito Obrigado.

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Uma ideia de como fazer

Post by Gio » 11 Feb 2020, 18:40

Boa tarde Guiguiiz.

Que bom que está interessado em aprofundar seus conhecimentos de programação. E já que estamos tratanto de programação...

... Seria isso possivel?

Praticamente qualquer coisa que você já viu na tela de um computador é possível de ser feita com programação. Sendo assim, um bom exercício para qualquer programador iniciante é desmistificar o pensamento de que precisamos primeiro ser convencidos das possibilidades.

:arrow: Quando uma ideia parecer complexa demais para implementar, tudo que temos que fazer é dividi-la em passos cada vez menores até que possamos resolvê-los com as ferramentas que já dispomos. Fazemos isso até que as ferramentas que temos disponíveis sirvam para solucionar todas as pequenas partes do problema e é nesse momento que teremos solucionado o problema maior.

No exemplo abaixo, veja como usamos um While-loop com GetKeyState e MouseGetPos para resolver o problema da "seleção de área" com o mouse. Veja também como usamos uma GUI transparente para deixar visível a área da seleção atual.

:arrow: MODO DE USAR: Segure o botão do windows (o do seu teclado) e depois aperte e segure o botão esquerdo do mouse arrastando-o para baixo e para a direita. Veja como uma área é selecionada. Depois, solte os botões e aperte várias vezes o F2: O mouse se move para várias posições aleatórias dentro da área selecionada. Repita a seleção quantas vezes quiser para alterar a área em que o mouse se movimentará.

Code: Select all

#LButton::
CoordMode, Mouse, Screen
While GetKeyState("Lbutton","P")
{
	If (PosX = "")
	{
			MouseGetPos, PosX, PosY
			Pos_X_1 := PosX
			Pos_Y_1 := PosY
	}
	MouseGetPos, PosX, PosY
	Pos_X_2 := PosX
	Pos_Y_2 := PosY
	
	Gui 99: +AlwaysOnTop -caption +Border +ToolWindow +LastFound +0x40000
	Gui, 99: Color, 909090
	WinSet, Transparent, 100
	W := Pos_X_2 - Pos_X_1
	H := Pos_Y_2 - Pos_Y_1
	Gui, 99: Show, x%Pos_X_1% y%Pos_Y_1% w%W% h%H%
	Sleep, 10
}
PosX := ""
PosY := ""
Gui, 99: Destroy
Return

F2::
If (Pos_X_2 = "")
{
	msgbox, 0x10, Erro, Você ainda não selecionou uma área. Segure o botão do windows e arraste o mouse para selecionar uma nova área!
	Return
}
Random, POS_X_PARA_USO, %Pos_X_1%, %Pos_X_2%
Random, POS_Y_PARA_USO, %Pos_Y_1%, %Pos_Y_2%
CoordMode, Mouse, Screen
MouseMove, %POS_X_PARA_USO%, %POS_Y_PARA_USO%
Return

OBS: Usei o MouseMove ao invés do clique para que possamos ver mais facilmente o resultado da área selecionada.

OBS2: Peço que altere o título deste tópico para algo mais explicativo do seu conteúdo. Tópicos com descrições genérias como "tenho um problema" ou "preciso de ajuda" não ajudam tanto a organização dos fórums quanto descrições mais específicas dos assuntos, como "Seleionar uma área com o mouse" ou "definir área de cliques com o mouse".

Se tiver alguma dúvida sobre o código acima, basta postar abaixo :thumbup:

Tilo
Posts: 8
Joined: 17 Feb 2021, 02:56

Re: Uma ideia de como fazer

Post by Tilo » 06 Apr 2021, 23:02

Olá Gio, tudo bem?

Gostei muito da forma como a sua solução foi apresentada, com interface gráfica e tal. Muito prático! Mas eu gostaria de ir além e definir não uma, mas duas áreas diferentes, definir atalhos para cada uma delas (ou uma só pra ambas, sei lá) e fazer com que o mouse se mova entre a posição aleatória 1 e a posição aleatória 2. Entretanto meus skills aqui ainda não muito limitados e, mesmo após várias tentativas, não obtive sucesso algum.

De que forma eu poderia fazer com que seu script salvasse não uma, mas duas áreas distintas? Queria poder, por exemplo, apertar F1 pra mover para esse ponto ALEATORIO_1 e F2 pro ALEATORIO_2.

Post Reply

Return to “Ajuda e Suporte Geral”