Checando os pixel com Check-box Topic is solved

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

Moderator: Gio

Nauany
Posts: 58
Joined: 12 Dec 2016, 01:37

Checando os pixel com Check-box

19 Jun 2018, 06:46

Bom dia, estou criando um script para que adicione a cor de um pixel em 1 variável.
depois ele teste a cor no momento com a cor adicionada antes e se forem diferentes ele usa uma hotkey.
Tudo isso com um checkbox para ele funcionar quando eu achar necessário, e ao ligar que ele se mantenha checando constantemente
ex:

Code: Select all

;----------------------------------------------------
Gui, Add, Hotkey, x20 y130 h20 w50 vvariablel30
gui, add, button, x120 y125 h30 w70 gMCF,  Button1
Gui Add, Checkbox, x200 y125 w100 h40 vMCFon gMCFo, % "On/Off"

;Exit
gui, add, button, x190 y330 h30 w80 gexit, Exit Script
;----------------------------------------------------
;----------------------------------------------------
gui, show
return
;----------------------------------------------------
MCF: 
Gui Submit, NoHide
{
MsgBox ,48 , , Selecione a Posição da sua Life, 10
KeyWait, LButton, D
MouseGetPos, PHeal3X, PHeal3Y
PixelGetColor, colorhp3,   %PHeal3X%, %PHeal3Y%
MsgBox Posição %PHeal3X%, %PHeal3Y%.  
}
return


#if (MCFon)
{
  PixelGetColor, colorhp03,   %PHeal3X%, %PHeal3Y%
  if (colorhp3 != colorhp03)
  {
    Send {%variablel30%}
    return                            
  }
}
#if
Return

MCFo:
Gui Submit, NoHide
  if (MCFon)
  {
    MsgBox ,48 , , Ativado!, 10.

  }
  else
  {
    SetTimer, , Off
    MsgBox ,48 , , Desativado!, 10.
  }
  Return
;----------------------------------------------------

guiclose:
exit:
 {
   exitapp
 }
return
o problema que ele não acontece nada quando eu "ativo" a check-box, e não estou conseguindo enxergar aonde estou errando.
Alguém com uma opinião por fora pra dar uma forcinha?
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Checando os pixel com Check-box  Topic is solved

19 Jun 2018, 10:33

Bom dia Nauany.

O AutoHotkey possui algumas ferramentas que auxiliam o programador a realizar o debugging dos seus scripts. Uma que eu utilizo bastante e considero muito útil é a tela de linhas executadas mais recentemente (Lines most recently executed).

Para acessá-la, basta seguir estes passos:
  • 1. Execute qualquer script do AutoHotkey que não termine imediatamente (ou seja, qualquer um que tenha uma GUI ou uma hotkey).
    2. Ao executá-lo, aparecerá um ícone de H verde no canto inferior direito da tela (a bandeja de ícones). Se não aparecer, clique na seta que mostra os ícones ocultos do tray e você vai vê-lo.
    3. Clique com o botão direito do mouse no ícone de H verde.
    4. Selecione Open.
    5. Na tela que se abre, selecione View -> Lines most recently executed (Essa tela na verdade já é a que aparece por padrão quando você clica em open).
Pronto! a lista que aparecerá será a das linhas do programa na ordem em que foram executadas!
Essa lista se atualiza a qualquer momento se você clicar F5, e também mostra o tempo desde a execução da última linha.

No caso do seu aplicativo, eu executei ele, depois cliquei no botão "On/Off", e fui olhar o que dizia na lista de linhas executadas. O resultado foi este:
RESULTADO CHECKBOX.png
RESULTADO CHECKBOX.png (30.24 KiB) Viewed 1486 times
Se você observar a ordem de execução, verá que:
  • 1. Quando cliquei no checkbox, a label MCFo foi chamada.
    2. Na linha 38, a primeira da label MCFo, a variável MCFon recebeu os valores da checkbox. Seu novo valor portanto é 1.
    3. Na linha 39, é operada uma condicional de execução, que verifica se a variável MCFon tem um valor positivo. Como sabemos que o valor é 1, a condicional resulta verdadeira e, portanto, o primeiro bloco é o que executa.
    4. O primeiro bloco chama uma msgbox dizendo "ativado!"...
    5. E depois simplesmente termina (sinal de fechamento de bloco encontrado)!
    6. Assim, a execução pula para a linha após a condicional, que é uma linha de return, o que faz com que a label termine.
Só isso. Viu onde está o problema? Não tem nenhum settimer ou coisa parecida dentro do bloco da condicional que executa quando ativa a checkbox.

:arrow: Outra ferramenta muito útil para fazer debugging, é a lista de variáveis e valores. Você pode acessá-la na mesma tela da lista de linhas executadas recentemente, mas o caminho é View -> Variables and their contents. O resultado mostrado será sempre relativo ao estado das váriais na última linha executada, e você pode controlar isso adicionando MsgBox imediatamente depois das linhas em que quiser que a execução pare para ver o que tem nas variáveis.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 33 guests