~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

Ferramentas, dicas e truques de informática em geral, endereços da Internet e muito mais
VadoJMS
Posts: 28
Joined: 20 Oct 2017, 17:36

~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

25 Mar 2018, 15:55

Boa tarde.

Há alguns meses descobri uma extensão do navegador Chrome muito legal chamada “Vimium”. É uma extensão fascinante! :bravo:
Hoje não consigo viver sem. :superhappy:
Fiquei pensando será que já existe algum script que possibilite algo parecido... (?)
Tem como fazer algo semelhante com o AutoHotkey ou existe algum outro programa que dê para baixar e criar esses mapas de atalhos no Windows?

OBSERVAÇÃO

:dance: O título sensacionalista e o uso de mais um (já é o terceiro) emoticon tem como objetivo deixar claro que essa extensão é muito útil!
Mais útil será caso haja alguma forma de estender essas funções além do navegador, para o PC de modo geral.
User avatar
Gio
Posts: 503
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

26 Mar 2018, 10:52

Bom dia VadoJMS :)
Tem como fazer algo semelhante com o AutoHotkey ou existe algum outro programa que dê para baixar e criar esses mapas de atalhos no Windows?
Mais útil será caso haja alguma forma de estender essas funções além do navegador, para o PC de modo geral.
Eu particularmente não uso essa ferramenta, mas dando uma olhada em alguns vídeos, acredito que é sim perfeitamente possível implementar algo parecido no AutoHotkey com um bom grau de sucesso em ambiente Windows. Você já viu o script WindowSpy.ahk, que acompanha o pacote das novas versões do AutoHotkey? É um script de AutoHotkey (logo você pode estudar o código, que é até pequeno) e quando você clica em "Follow Mouse" ele vai te dar dados sobre qualquer controle da janela ativa em que o mouse se posicionar (incluindo nome e posição). Sendo assim, tudo seria uma questão de usar um código parecido para escanear toda a tela por controles disponíveis e depois implementar balões de texto com opções de hotkeys que possam ser ativadas por atalhos do teclado e que implementem cliques ou interajam com esse controles quando solicitadas.

É claro que essa descrição é uma simplificação inicial, pois a tarefa com certeza vai requerer uma boa dose de trabalho no desenvolvimento, e portanto, isso deve ser tratado como um projeto. Se você decidir por iniciar esse projeto, sinta-se livre para tirar suas dúvidas aqui no fórum :thumbup:
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
VadoJMS
Posts: 28
Joined: 20 Oct 2017, 17:36

Re: ~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

27 Mar 2018, 06:37

Bom dia, Gio.

Vai ser fantástico se eu conseguir implementar essa função além do navegador. Usar no Windows e demais programas de modo geral.
Acabou de me ocorrer mais uma dúvida. Existe alguma maneira do Autohotkey funcionar em outros Sistemas Operacionais como o Linux, por exemplo?
É possível?

Parece interessante o que você propôs, porém se eu não estiver entendido errado, isso significa que eu terei sempre que escanear todos os novos possíveis links clicáveis?
Terei que mapear manualmente sempre cada um deles? :shock: :cry:
Não sei se você já utiliza o navegador Chrome. Caso a resposta for positiva e puder testar por um instante a extensão poderá notar que ela é muito simples (e também muito útil).
Ela sempre localizará os links clicáveis na página através da tecla “f” para cliques em que o conteúdo se abrirá em outra aba basta apertar “f” + “Shift”.
Em “Options” é possível substituir um atalho padrão de um site pelo da extensão o que é muito útil também...

Pois bem, meu desejo é que o script também consiga localizar os links automaticamente e associá-los as teclas necessárias para interpretar como um clique.
Caso só existir a possibilidade de ter que sempre ir colocando manualmente ao invés das teclas de atalho serem geradas espontaneamente, como na extensão.
Será um pouco frustrante, mas pelo menos é próximo do que almejo.
User avatar
Gio
Posts: 503
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

27 Mar 2018, 11:26

Existe alguma maneira do Autohotkey funcionar em outros Sistemas Operacionais como o Linux, por exemplo?
É possível?
Se não me engano havia um projeto chamado IronAHK, mas não sei em que ponto do desenvolvimento ele se encontra. Acho até que não está mais sendo desenvolvido. Então, infelizmente nada de AutoHotkey para Linux por enquanto.
Terei que mapear manualmente sempre cada um deles? :shock: :cry:
Não, basta escrever o código de modo que a mapeação seja automática.
Pois bem, meu desejo é que o script também consiga localizar os links automaticamente e associá-los as teclas necessárias para interpretar como um clique.
O que você tá querendo fazer na verdade é fácil de fazer. O problema é somente que isso é uma tarefa grande (um projeto), e como qualquer tarefa grande, você terá que dividí-la em várias tarefinhas menores, para depois ir programando elas uma a uma ao longo do tempo (isso é o que chamamos de desenvolvimento). Eu vou te dar um exemplo. O script abaixo abre uma janela com vários botões. Ele também cria uma hotkey F2 que quando você pressiona, mapeia todos os botões da tela e exibe uns balões com as iniciais de cada um. Depois, se você aperta uma inicial qualquer, ele aciona o botão correspondente.

Code: Select all

#SingleInstance, Force
; PASSO 1: CRIAMOS UMA TELA PARA EXEMPLIFICAR O MÉTODO DE CRIAR OS BALÕES PARA OS BOTÕES.
; A TELA CONSISTE APENAS EM UM NÚMERO GRANDE DE BOTÕES DE EXEMPLO, TODOS COM INICIAIS DIFERENTES
; (POIS AINDA ESTAMOS ADOTANDO O MÉTODO DAS INICIAIS, SEM DIFERENCIAR BOTÕES COM MESMA INICIAL NESTE EXEMPLO)
Gui, Add, Edit
Gui, add, button, gAcoes, Salvar
Gui, Add, Edit
Gui, add, button, gAcoes, Carregar
Gui, Add, Edit
Gui, add, button, gAcoes, Rodar
Gui, Add, Edit
Gui, add, button, gAcoes, Executar
Gui, Add, Edit
Gui, add, button,gAcoes, Verificar
Gui, Add, Edit
Gui, add, button,gAcoes, Terminar
Gui, Add, Edit
Gui, add, button,gAcoes, Arquivar
Gui, Add, Edit
Gui, show, w300 h500, Exemplo
return

; PASSO 2:
; E CRIAMOS UMA LABEL PARA EXECUTAR AS AÇÕES QUANDO QUALQUER DOS BOTÕES FOR PRESSIONADO 
; (TAMBÉM É POSSÍVEL CRIAR UMA LABEL PARA CADA BOTÃO, MAS DESSE JEITO FICA MAIS FÁCIL O EXEMPLO).
Acoes:
If !(CURRENT_HOTKEY = "") ; SE A VARIÁVEL COM O NOME DA HOTKEY CHAMADA TIVER ALGUM DADO, ESTA LABEL FOI CHAMADA ATRAVÉS DE HOTKEY. DAÍ EXECUTA O LOOP ABAIXO.
{
	Loop 20 ; LOOP 20, PARA VERIFICAR OS TEXTOS DE TODOS OS BOTÕES QUE COLETAMOS.
	{
		If (SubStr(CTRL_NAME_%A_Index%, 1, 1) = CURRENT_HOTKEY) ; SE A INICIAL DO TEXTO DO BOTÃO FOR O MESMO DA HOTKEY CLICADA...
		{
			CURRENT_CONTROL := CTRL_NAME_%A_Index% ; DESIGNA AQUELE BOTÃO COMO SENDO O CONTROLE A OPERAR.
		}
	}
	ControlSend, %CURRENT_CONTROL%, %A_Space%, A ;  E MANDA UM ESPAÇO PARA O BOTÃO (PARA ATIVÁ-LO).
	CURRENT_HOTKEY := "", ; DEPOIS LIMPA AS VARIÁVEIS QUE SE USA EM CADA CHAMADA (PARA PREPARAR PARA A PRÓXIMA CHAMADA).
	CURRENT_CONTROL := "" ; O MESMO DE CIMA.
	Return ; TERMINA A EXECUÇÃO.
}
msgbox, Você Pressionou %A_GuiControl% ; ESTA LINHA É A OPERAÇÃO DO BOTÃO. ELA OCORRE SEM O CÓDIGO ACIMA SE VOCÊ CLICAR NO BOTÃO E APÓS O CÓDIGO ACIMA SE VOCÊ CLICAR NA HOTKEY (VEJA QUE A HOTKEY CHAMA A LABEL DE NOVO COM UM ESPAÇO, E NESSA SEGUNDA CHAMADA NÃO TEM MAIS INDICAÇÃO DE ACIONAMENTO POR HOTKEY).
Return

; PASSO 3: CRIAMOS UMA LABEL PARA REINICIAR UMA VARIÁVEL QUE CONTÉM A ÚLTIMA HOTKEY.
; ISSO SÓ FOI FEITO PARA NÃO MODIFICARMOS O CONTEÚDO DA VARIÁVEL EMBUTIDA A_ThisHotkey DIRETAMENTE.
Hotkeys_pressionadas:
CURRENT_HOTKEY := A_ThisHotKey ; SE PRESSIONARMOS A HOTKEY, PREENCHE A VARIÁVEL COM O NOME DA HOTKEY CHAMADA.
Gosub, Acoes
Return

; PASSO 4: CRIAMOS UMA HOTKEY F2, QUE QUANDO FOR PRESSIONADA, ANALISA A TELA ATIVA (QUE É A NOSSA SE VOCÊ EXECUTOU O SCRIPT E JÁ CLICOU, 
; MAS PODE SER OUTRA. A QUESTÃO É QUE NO MOMENTO O SCRIPT É MUITO FRACO PARA TRABALHAR COM TODO E QUALQUER TIPO DE TELA E BOTÃO, MAS PODE 
; FUNCIONAR EM ALGUMAS. FUNCIONOU RELATIVAMENTE NA TELA DO SCITE4AUTOHOTKEY, POR EXEMPLO)

F2::
Loop, 20 ; LOOP 20, POIS O TOOLTIP FUNCIONA APENAS COM 20 ENTRADAS NO MÁXIMO.
{
	ControlGetText, CTRL_NAME_%A_Index%, Button%A_Index%, A ; COLETA OS TEXTOS DOS BOTÕES DA TELA ATIVA AUTOMATICAMENTE BASEADO EM LOOP E A_INDEX.
	ControlGetPos, CTRL_X_%A_Index%,  CTRL_Y_%A_Index%, CTRL_W_%A_Index%, CTRL_H_%A_Index%, Button%A_Index%, A ; COLETA AS POSIÇÕES DOS CONTROLES.
	HOTKEY_NAME := SubStr(CTRL_NAME_%A_Index%, 1, 1) ; PEGA A INICIAL DO TEXTO DO CONTROLE PARA CRIAR A HOTKEY ASSOCIADA DEPOIS.
	If (A_Index <= 20)
	{
		ToolTip, %HOTKEY_NAME%, % CTRL_X_%A_Index% + CTRL_W_%A_Index%,  CTRL_Y_%A_Index% + CTRL_H_%A_Index%, %A_Index% ; CRIA UM BALÃO PARA CADA BOTÃO.
		If !(HOTKEY_NAME = "") ; SE O TEXTO DO BOTÃO ESTIVER EM BRANCO, NÃO RODA O CÓDIGO ABAIXO.
		{
			HotKey, %HOTKEY_NAME%, Hotkeys_pressionadas ; GERA A HOTKEY.
		}
	}
}
Return
Este código pode até ser um ponto de partida. Veja que ele até funciona em algumas outras janelas do Windows que tenham botões, pois ele opera na janela ativa. Mas veja que ainda tem muita coisa pra fazer. Tem várias situações que tem que ser decididas, como por exemplo, "o que fazer quando dois botões tiverem a mesma inicial?" ou então "o que fazer em telas com mais de 20 controles?" ou então "o que fazer com botões que não pertencem à ClassNN Button?" E assim sucessivamente. Todas essas decisões, que provavelmente serão dezenas ou até centenas, você terá que tomar ao longo do desenvolvimento, ajustando o código para cada uma até que fique conforme a sua ideia geral.

É assim que programação funciona. Dividindo uma tarefa grande em tarefas menores. Também vale dizer que é quase impossível responder "Como crio um Word?", mas é até possível explicar "Como crio um botão de centralizar texto?" (que é um passo para fazer um Word). E sendo assim, quando você se deparar com um problema que não saiba resolver em uma dessas tarefas pequenas, sinta-se livre para perguntar aqui no fórum, mesmo que sejam vários, até que consiga terminar seu desenvolvimento :thumbup:
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
User avatar
juanmuscaria
Posts: 56
Joined: 29 Oct 2017, 10:53
GitHub: juanmuscaria
Location: Brazil
Contact:

Re: ~* O SCRIPT SUPREMO! (Se Não Existir Alguém Pelo Amor de Deus Crie) *~

01 Apr 2018, 18:40

VadoJMS wrote:Existe alguma maneira do Autohotkey funcionar em outros Sistemas Operacionais como o Linux, por exemplo?
É possível?
Sim,e não
Eu uso linux e ahk jutos porem tem umas limitações
Usando o wine (https://www.winehq.org/) você pode executar os seu programas escritos em ahk porem,ele só afeta outros programas que estão rodando dentro do wine,pois o wine cria uma sandbox que separa esse "Windows" do seu linux,porem o script que eu uso para um jogo (Esse jogo não tem para linux,então uso o wine para rodar ele) funciona perfeitamente,só que tive que configurar umas coisas no wine por causa do mouse.
Programas que só usarem a parte grafica sem nenhum comando de Send ou hotkey não terá nenhum problema.
Gio wrote: Acho até que não está mais sendo desenvolvido.
Realmente o IronAHK morreu porem nada impede que alguém tenha a boa vontade de pega o código fonte do ironAHK e continuar ele.
https://github.com/Paris/IronAHK
Aqui fala que ele foi descontinuado^^^^

Return to “Outras Ferramentas e Recursos”

Who is online

Users browsing this forum: No registered users and 1 guest