PASS/LOGIN

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

Moderator: Gio

User avatar
Ria
Posts: 23
Joined: 03 Sep 2018, 17:54

PASS/LOGIN

05 Sep 2018, 11:06

Olá,
Eu tenho algumas noções de "C", matéria até aos vetores...portanto, manipulo bem variáveis e especialmente em formulas matemáticas já que a minha área era engenharia de eletrónica, mas deixei para já o curso a meio porque profissionalmente saí de Lisboa...
Encontrei há pouco tempo mais esta "linguagem", o AHK, e estou a tentar perceber os métodos mais simples de aprender, estou bastante motivado e interessado!
Daí que venho pedir ajuda para "recortar" o código abaixo de forma a ficar simplesmente com senha?
Ou seja, apenas pretendia um formulário com campo TEXT para inserir SENHA e, caso correto, passar para outro formulário...senão MsgBox de senha errada….
Precisava que a senha ao ser escrita seja do tipo "******", é mais interessante..!
Desculpem lá a questão mas ainda estou a pesquisar mesmo qual será o método de estudo mais eficaz para levar isto mais simples e depressa e preciso de motivação...kkkkkk
Se precisarem de algo disponham!!!
Muito obrigado


CODIGO:

;************************************************************************************
; PRIMEIRO, CRIAMOS A GUI PRINCIPAL, CHAMADA "SOMADORA COM SENHA"
;************************************************************************************

Gui, add, edit, x50 y50 number vPRIMEIRO_VALOR
Gui, add, edit, x50 y80 number vSEGUNDO_VALOR
Gui, add, button, x50 y120 gSOMAR_VALORES, SOMAR
Gui, add, EDIT, x50 y150 disabled
Gui, show, w400 h400, SOMADORA COM SENHA
Return

;******************************************************************************************************************************************************************
; DEPOIS, CRIAMOS UMA FUNÇÃO PARA CRIAR A SEGUNDA GUI, QUE SERÁ PERTENCENTE À GUI 1 (E VAI BLOQUEÁ-LA ENQUANTO NÃO FOR FECHADA).
; Essa função será chamada através da label do botão da Gui 1.
;******************************************************************************************************************************************************************

SOMAR_VALORES:
COLLECT_PASS()
Return

COLLECT_PASS()
{
Gui, 2: Add, Text, x50 y50, SENHA:
Gui, 2: add, edit, x50 y80 vSENHA_INSERIDA
Gui, 2: Add, Button, x50 y120 gVERIFICA_SENHA, CONFIRMAR
Gui, 2: show, w200 h150
Gui, 2: +Owner1
Gui, 1: +Disabled ; Aqui desabilitamos a Gui 1 quando a Gui 2 for criada (isso será desfeito quando a gui 2 for fechada, lá em 2guiclose).
}

VERIFICA_SENHA:
Gui, 2: Submit, nohide
If (SENHA_INSERIDA = "EXEMPLO") ; Se a senha escrita na Gui 2 estiver correta, o valor será somado.
{
Gosub, 2GuiClose
Gui, 1: Submit, nohide
VALOR_A_EXIBIR := PRIMEIRO_VALOR + SEGUNDO_VALOR
ControlSetText, Edit3, %VALOR_A_EXIBIR%, SOMADORA COM SENHA
}
Else ; Mas se a senha estiver errada, nada acontece (e não adianta fechar a gui 2, pois o código acima só ocorre se a senha estiver certa e o botão pressionado).
{
msgbox % "Senha errada! A senha correta é a palavra EXEMPLO"
}
Return

;***********************************************************************
; SE A GUI 2 FOR FECHADA, DESTRUÍMOS ELA E LIBERAMOS A GUI 1.
;***********************************************************************

2GuiClose:
Gui, 1: -Disabled ; Aqui reabilitamos a gui 1.
Gui, 2: Destroy
Return

;***********************************************************************
; SE A GUI 1 FOR FECHADA, ENCERRAMOS O SCRIPT.
;***********************************************************************
Guiclose:
ExitApp
Podemos não voltar, mas vamos e...se fosse fácil, também não era mesmo para nós…! :superhappy:
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: PASS/LOGIN

05 Sep 2018, 11:36

Bom dia Ria.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

O código que você postou foi formatado em rotinas (labels e funções), de modo que fica mais fácil entender as partes. No caso da senha, o que ocorre é o seguinte:

Passo 1. Cria-se uma janela com um campo para coleta da senha. Esta rotina está dentro da função COLLECT_PASS(), que no caso desse script, está sendo chamada através do botão SOMAR (a chamada está dentro da label configurada para o botão, que é a SOMAR_VALORES). Assim, tudo que temos que fazer é copiar o código de formulário da senha de dentro da função COLLECT_PASS().
Passo 2. O formulário de coleta de senha tem um botão que chama a label VERIFICA_SENHA. Dentro dela está portanto o código que compara a senha. Ele faz isso através de uma condicional com bloco em caso positivo (if =) e bloco em caso negativo (else). A condicional executa o bloco positivo caso a comparação dê resultado igual (digitado vs string "exemplo", que é o pass). Se a condicional der resultado de comparação diferente, ela executa o outro bloco (a msgbox de senha errada) e depois retorna (ou seja, não prossegue). Assim, devemos copiar também o código de comparação.

Depois é só colocar tudo junto (rotina de janela de inserção e rotina de comparação) com a separação das rotinas através de returns (COMENTÁRIOS NO CÓDIGO EM CAIXA ALTA APÓS O SÍMBOLO DE COMENTÁRIO ;):

Code: Select all

; PRIMEIRO CRIAMOS A JANELA 2 (ABAIXO)
Gui, 2: Add, Text, x50 y50, SENHA:
Gui, 2: add, edit, x50 y80 Password vSENHA_INSERIDA ; VEJA QUE IDENTIFICAMOS A VARIÁVEL "SENHA_INSERIDA" COMO ATRELADA AO CAMPO. A OPÇÃO PASSWORD FOI ADICIONADA.
Gui, 2: Add, Button, x50 y120 gVERIFICA_SENHA, CONFIRMAR ; AQUI O BOTÃO CONFIRMAR FICA ATRELADO À ROTINA VERIFICA_SENHA (OPÇÃO g).
Gui, 2: show, w200 h150
Return


VERIFICA_SENHA:
Gui, 2: Submit, nohide ; AQUI A ROTINA VERIFICA_SENHA ATUALIZA AS VARIÁVEIS DOS CAMPOS DA JANELA 2 COM OS DADOS INSERIDOS.
If (SENHA_INSERIDA = "EXEMPLO") ; AQUI VAI A COMPARAÇÃO DA SENHA INSERIDA.
{
 	; AQUI VAI O CÓDIGO SE A SENHA FOR CORRETA (OU SEJA, CRIANDO A NOVA TELA DE FORMULÁRIO OU ENTÃO CHAMANDO UMA NOVA ROTINA QUE A CRIE.)
 	; COMO A JANELA SEGUINTE AINDA SERÁ DESENVOLVIDA, COLOQUEI ABAIXO UMA MESSAGEBOX POSITIVA PARA ILUSTRAR A ROTINA DE SENHA CORRETA.
 	msgbox, 0, Aviso, SENHA CORRETA !
}
Else
{
	; AQUI VAI O CÓDIGO SE A SENHA ESTIVER ERRADA (COMPARAÇÃO DO CONTEÚDO DA VARIÁVEL VERIFICAR_SENHA COM A PALAVRA "EXEMPLO"
	msgbox, 0x10, Erro, Senha errada! A senha correta é a palavra EXEMPLO ; ATUALIZEI A MENSAGEM COM AS OPÇÕES DE APARECER X VERMELHO E EMITIR SOM.
	Return
}
Return
:arrow: O campo de inserção com visualização em ***** vem com a opção Password, que já inseri na linha que gera o campo (edit).

Espero ter ajudado. Se precisar de algum esclarecimento adicional, pode perguntar :thumbup:
User avatar
Ria
Posts: 23
Joined: 03 Sep 2018, 17:54

Re: PASS/LOGIN

05 Sep 2018, 13:25

Perfeito, Gio..! :dance:
Era isso mesmo que pretendia, para começar... :headwall:
Vamos nos vendo por aqui e se puder ajudar em algo, disponham. :beer:
Ficarei contente se puder contribuir!
Abraço
Muito Obrigado
Podemos não voltar, mas vamos e...se fosse fácil, também não era mesmo para nós…! :superhappy:

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 46 guests