Ajuda com script Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey
zanusso
Posts: 18
Joined: 23 Mar 2018, 17:49

Ajuda com script

28 Mar 2018, 14:23

Olá pessoal, alguém poderia me ajudar a resolver este meu problema, eu gostaria que quando o combo box estiver como "S" que ele executa-se a Tecla "F1" que no caso esta chamando uma outra parte do código.
Obs: da forma que esta eu consigo fazer apenas eu mesmo pressionando a tecla "F1" porem eu gostaria que no próprio loop ele checa-se se o combo box esta como "S" e pressiona-se a tecla para chamar um outro script logo abaixo para, sei que o comendo usado no script que é chamado com a tecla "F1" usa esta função (GetKeyState) que no caso só funciona se alguém fisicamente apertar a tecla. Existe uma outra forma de fazer a mesma coisa só de forma diferente?

Segue parte do código:

Code: Select all


ListBox:="S|"

Gui, Add, DropDownList,x10 w200 Sort vDDL5 gSubmit_ALL, % "N||"ListBox
	Gui, Font, 000000 
	Gui, Show, AutoSize Center

Submit_ALL:
	Gui, Submit, NoHide
	ToolTip, % DDL1
	ToolTip, % DDL2
	ToolTip, % DDL3
	ToolTip, % DDL4
	ToolTip, % DDL5 
	ToolTip, % DDL6 
	ToolTip, % DDL7
	ToolTip, % DDL8
	return


!r::  ;;;; ---- define cordenada e começa a executar o loop de pesca
MouseGetPos,a,b, xpos,ypos
MsgBox, Sua Cordenada Foi Definida!
Loop
{
sleep 1500
Send ^z
sleep 1000
MouseClick, left, %a%, %b%
sleep 23000
Send ^z
sleep 1000
sleep 1000
Send {%DDL1%}
sleep 500
Send {%DDL2%}
sleep 500
Send {%DDL3%}
sleep 500
Send {%DDL4%}
sleep 500
if (DDL5 = "S")
{	
	SendLevel 1
	Send {F1}
	SendLevel 0
}
else
{
	continue
}
sleep 1000
}
return



$F1::  ; Faz a tecla F1 uma tecla de acesso (hotkey) (o símbolo $ facilita o modo "P" do GetKeyState abaixo).
Loop  ; Visto que nenhum número é especificado nele, isso é um loop infinito a menos que o "break" ou "return" sejam encontrados dentro dele.
{
        if not GetKeyState("F1", "p")  ; Se essa declaração é verdadeira, o usuário soltou fisicamente a tecla F1.
                break  ; Para o loop.
        ; Caso contrário (já que o "break" acima não foi executado), mantenha o clique do mouse
		
		MouseGetPos,a,b, xpos,ypos
		;Msgbox, %a% %b%

		MouseClick, right, 1777, 250

		sleep 180

		Send, ^x

		sleep 180
		MouseClick, left, 1753, 142

		sleep 210

		MouseClick, right, 1753, 142


		MouseMove, a, b
    }

return


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

Re: Ajuda com script  Topic is solved

29 Mar 2018, 14:24

Boa tarde Zanusso.

Se entendi o que você disse, você quer que quando o usuário escolha "S" no combobox, o código da hotkey F1 seja executado independente do F1 correto?

Você pode fazer usando criando uma label na primeira linha dentro da hotkey e chamando ela na g-label do combobox quando o valor escolhido e gravado na variável for S.

Code: Select all

ListBox:="S|"

Gui, Add, DropDownList,x10 w200 Sort vDDL5 gSubmit_ALL, % "N||"ListBox
	Gui, Font, 000000 
	Gui, Show, AutoSize Center
	
Return

Submit_ALL:
	Gui, Submit, NoHide
	If (DDL5 = "S")
	{
		Gosub, EXECUTAR_COM_COMBOBOX_S
	}
	; COMENTEI AS LINHAS ABAIXO PORQUE TOOLTIP SEM NÚMERO SOBRESCREVE O ANTERIOR (LOGO, O VALOR DE DDL5 NÃO ESTAVA APARECENDO, POIS DEPOIS CHAMAVA UM COM DDL6, CUJO VALOR É NULO)
	;ToolTip, % DDL1
	;ToolTip, % DDL2
	;ToolTip, % DDL3
	;ToolTip, % DDL4
	ToolTip, % DDL5 
	;ToolTip, % DDL6 
	;ToolTip, % DDL7
	;ToolTip, % DDL8
	return


!r::  ;;;; ---- define cordenada e começa a executar o loop de pesca
MouseGetPos,a,b, xpos,ypos
MsgBox, Sua Cordenada Foi Definida!
Loop
{
sleep 1500
Send ^z
sleep 1000
MouseClick, left, %a%, %b%
sleep 23000
Send ^z
sleep 1000
sleep 1000
Send {%DDL1%}
sleep 500
Send {%DDL2%}
sleep 500
Send {%DDL3%}
sleep 500
Send {%DDL4%}
sleep 500
if (DDL5 = "S")
{	
	SendLevel 1
	Send {F1}
	SendLevel 0
}
else
{
	continue
}
sleep 1000
}
return



$F1::  ; Faz a tecla F1 uma tecla de acesso (hotkey) (o símbolo $ facilita o modo "P" do GetKeyState abaixo).
EXECUTAR_COM_COMBOBOX_S:
Loop  ; Visto que nenhum número é especificado nele, isso é um loop infinito a menos que o "break" ou "return" sejam encontrados dentro dele.
{
        if not GetKeyState("F1", "p")  ; Se essa declaração é verdadeira, o usuário soltou fisicamente a tecla F1.
		{
				If !(DDL5 = "S") ; Adicionamos um segundo nível de verificação antes do break, de modo que se o combobox contém S, continuamos a executar.
				{
					break  ; Para o loop.
				}
		}
        ; Caso contrário (já que o "break" acima não foi executado), mantenha o clique do mouse
		
		MouseGetPos,a,b, xpos,ypos
		;Msgbox, %a% %b%

		MouseClick, right, 1777, 250

		sleep 180

		Send, ^x

		sleep 180
		MouseClick, left, 1753, 142

		sleep 210

		MouseClick, right, 1753, 142


		MouseMove, a, b
}

return
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
zanusso
Posts: 18
Joined: 23 Mar 2018, 17:49

Re: Ajuda com script

30 Mar 2018, 10:19

Obrigado Gio, você é muito prestativo amigo.
Gio wrote:Boa tarde Zanusso.

Se entendi o que você disse, você quer que quando o usuário escolha "S" no combobox, o código da hotkey F1 seja executado independente do F1 correto?

Você pode fazer usando criando uma label na primeira linha dentro da hotkey e chamando ela na g-label do combobox quando o valor escolhido e gravado na variável for S.

Code: Select all

ListBox:="S|"

Gui, Add, DropDownList,x10 w200 Sort vDDL5 gSubmit_ALL, % "N||"ListBox
	Gui, Font, 000000 
	Gui, Show, AutoSize Center
	
Return

Submit_ALL:
	Gui, Submit, NoHide
	If (DDL5 = "S")
	{
		Gosub, EXECUTAR_COM_COMBOBOX_S
	}
	; COMENTEI AS LINHAS ABAIXO PORQUE TOOLTIP SEM NÚMERO SOBRESCREVE O ANTERIOR (LOGO, O VALOR DE DDL5 NÃO ESTAVA APARECENDO, POIS DEPOIS CHAMAVA UM COM DDL6, CUJO VALOR É NULO)
	;ToolTip, % DDL1
	;ToolTip, % DDL2
	;ToolTip, % DDL3
	;ToolTip, % DDL4
	ToolTip, % DDL5 
	;ToolTip, % DDL6 
	;ToolTip, % DDL7
	;ToolTip, % DDL8
	return


!r::  ;;;; ---- define cordenada e começa a executar o loop de pesca
MouseGetPos,a,b, xpos,ypos
MsgBox, Sua Cordenada Foi Definida!
Loop
{
sleep 1500
Send ^z
sleep 1000
MouseClick, left, %a%, %b%
sleep 23000
Send ^z
sleep 1000
sleep 1000
Send {%DDL1%}
sleep 500
Send {%DDL2%}
sleep 500
Send {%DDL3%}
sleep 500
Send {%DDL4%}
sleep 500
if (DDL5 = "S")
{	
	SendLevel 1
	Send {F1}
	SendLevel 0
}
else
{
	continue
}
sleep 1000
}
return



$F1::  ; Faz a tecla F1 uma tecla de acesso (hotkey) (o símbolo $ facilita o modo "P" do GetKeyState abaixo).
EXECUTAR_COM_COMBOBOX_S:
Loop  ; Visto que nenhum número é especificado nele, isso é um loop infinito a menos que o "break" ou "return" sejam encontrados dentro dele.
{
        if not GetKeyState("F1", "p")  ; Se essa declaração é verdadeira, o usuário soltou fisicamente a tecla F1.
		{
				If !(DDL5 = "S") ; Adicionamos um segundo nível de verificação antes do break, de modo que se o combobox contém S, continuamos a executar.
				{
					break  ; Para o loop.
				}
		}
        ; Caso contrário (já que o "break" acima não foi executado), mantenha o clique do mouse
		
		MouseGetPos,a,b, xpos,ypos
		;Msgbox, %a% %b%

		MouseClick, right, 1777, 250

		sleep 180

		Send, ^x

		sleep 180
		MouseClick, left, 1753, 142

		sleep 210

		MouseClick, right, 1753, 142


		MouseMove, a, b
}

return

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 1 guest