Page 1 of 1

Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 May 2020, 10:17
by thomasmessi
Olá amigos tudo bem? Faz tempo que não apareço por aqui.
Tenho uma dúvida e gostaria de esclarecimentos se é possível fazer um menu com caixa de seleção e ao clicar no item selecionado apertando enter, o clique do mouse selecione exatamente o que queremos na tela na posição x, y.
Vou dar um exemplo:
!^m:: ;abre o menu
Neste menu queria fazer uma caixa seletiva com setas para baixo e para cima como se fosse uma lista. Digamos que nessa lista tem 45 itens e quero selecionar o item de número 10 que na tela do meu programa é um efeito que é ativo com o mouse.
Ou seja, faço !^m para abrir o menu
com setas navego para o item 10
e com o enter pressiono e ele clica na posição x,y que já tenho mapeado a posição do mouse. por exemplo x 175 e y 270
E nesta primeira possibilidade testar preservando o menu seletivo e a segunda opção seria ao apertar enter o menu se fecharia.

abraços.
obs: sou principiante com ahk.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 24 May 2020, 07:44
by Hologram
Bom dia @Thomasmessi, Não Sei Se Entendi Direito, Mas Testa Assim:

Code: Select all

^m:: ; Comando pra abrir o menu
Gui, Show, w530 h320, Menu Seletivo Open Code ; Responsavel por fazer aparecer uma tela de fundo
Gui, Add, ListBox, r13 gExecutar vSELECIONADO x13 y20 w105, Item1|Item2|Item3 ; Lista com os itens para escolher
Return

Executar: ; Botao Executar Criado Junto A ListBox
Enter:: ; Ao Apertar Enter Ele Irá Mover O Mouse Segundo O Item Selecionado
Gui, submit, nohide
If (SELECIONADO = "Item1") ;Qual Item Foi Selecionado
{ 
	MsgBox, Coloque O Script Que Moverá o Mouse Para A Primeira Coordenada Aqui! ; Script Entre Os Colchetes
}
Else if (SELECIONADO = "Item2") ;Qual Item Foi Selecionado
{ 	
	MsgBox, Coloque O Script Que Moverá o Mouse Para A Segunda Coordenada Aqui! ; Script Entre Os Colchetes
}
Else if (SELECIONADO = "Item3") ;Qual Item Foi Selecionado
{ 
	MsgBox, Coloque O Script Que Moverá o Mouse Para A Terceira Coordenada Aqui! ; Script Entre Os Colchetes
}

return


Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 12 Jun 2020, 10:35
by thomasmessi
olá amigo por ser muito novato com ahk e ainda por cima ser cego (deficiente visual total) fica difícil entender.
Eu compreendi mais ou menos sua boa idéia
o primeiro click seria esse:
^3::
MouseClick left, 548, 318
Return

o segundo click seria esse:
^4::
MouseClick left 427, 441
Return

obs: A idéia que tenho é assim:
Esta tela que estou mapeando não tem acessibilidade para cegos, só para quem enxerga e clica com o mouse
Mas, com ahk podemos usar as opções de click e ao fazer isso vamos mudando opções na tela
Este menu seletivo facilitaria, pois, era tão somente escolher o ítem na lista apertar enter e o click iria na coordenada mapeada na tela.

tem como fazer isso ou é impossível?

abraços e desde já obrigadão mesmo.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 12 Jun 2020, 11:47
by Hologram
Não sei se coompreedi 100% da sua idéia amigo, mas vê se ficou do seu gosto:

Code: Select all

^3:: ; Comando pra abrir o menu
Gui, Show, w130 h220, Menu Seletivo ; Responsavel por fazer aparecer uma tela de fundo
Gui, Add, ListBox, r13  vSELECIONADO x13 y20 w105, Item1|Item2 ; Lista com os itens para escolher
SoundPlay, %A_ScriptDir%\iniciar.mp3
Return

 ; Botao Executar Criado Junto A ListBox
Enter:: ; Ao Apertar Enter Ele Irá Mover O Mouse Segundo O Item Selecionado
Gui, submit, nohide
If (SELECIONADO = "Item1") ;Qual Item Foi Selecionado
{ 
	MouseMove, 548, 318 
	SoundPlay, %A_ScriptDir%\item1.mp3
}
Else if (SELECIONADO = "Item2") ;Qual Item Foi Selecionado
{ 	
	MouseMove, 427, 441
	SoundPlay, %A_ScriptDir%\item2.mp3
}
return

Basicamente funciona assim:

Ao apertar Ctrl+3 (ou qualquer outra tecla da sua escolha) ele abrira a tela com o menu´, e após selecionar alguma opçao e apertar a tecla Enter irá para a coordenada, e em seguida receba um aviso para a coordenada que foi movido

Corrigi um erro que tinha deixado sem querer, que só de selecionar a opção ele ja ativava o Move do mouse, mesmo sem apertar Enter

Se quiser também as coordenadas podem ser calculadas por uma imagem, ou pixel para não ter que configurar de pc para pc

Adicione esses três arquivos junto a mesma pasta do script, eles farão a parte sonora funcionar:
Dowload Link: https://voca.ro/iVybcjNP8ok
Dowload Link: https://voca.ro/aVdqYh0ZQGO
Dowload Link: https://voca.ro/ddYepa9Mxe3

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 13 Jun 2020, 14:46
by thomasmessi
olá amigo boa tarde desde já agradeço seu empenho para ajudar-me!
Porém quando seleciono o item na caixa de seleção e aperto enter não faz a função de clicar no mouse e trocar o que deveria trocar.
Há outra ideia a se fazer??

uma outra questão que achei super interessante que você mencionou acima:
"Se quiser também as coordenadas podem ser calculadas por uma imagem, ou pixel para não ter que configurar de pc para pc"
Como isso seria feito?

Vou tentar dar uma outra alternativa que tenho
o código consegui montar
agora o que preciso saber é como fazer que a tecla enter ao escolher o item na lista vá para a coordenada e clique com o botão do mouse esquerdo
sei que numa tecla de atalho o MouseClick left,x,y clicam com o botão esquerdo na coordenada. E
Mas não sei fazer isso quando tenho um menu seletivo ou um menu igual ao que vou colocar abaixo

eis meu código:

!^c:: ;abre o meu menu para escolher ; alt-control-c
MouseClick left, 985, 157
nvdaSpeak("abre painel") ;esta linha trabalha com meu leitor de tela falando em voz os comandos não sendo necessário incluir sons em mp3 embora em alguns momentos seja bem útil e também vou usar.
Gosub, ChannelMenu
Return

Send {Appskey}
Sleep 100 ; esperar alguns milesegundos até o menu aparecer
Send {down %Channel%}
Return


^3:: ; clicar no item 1
MouseClick left, 548, 318
nvdaSpeak("clica no item 1")
Return

^4:: ; clicar item 2
MouseClick left, 427, 441
nvdaSpeak("clica no item 2")
Return

ChannelMenu:
Menu, MyChannelMenu, Add
Menu, MyChannelMenu, DeleteAll
Menu, MyChannelMenu, Add, click 1, MyChannelMenuHandler
Menu, MyChannelMenu, Add, click 2, MyChannelMenuHandler
Menu, MyChannelMenu, Show
Return

MyChannelMenuHandler:
Send {Appskey}
Sleep 100 ; give the context menu some time to appear
Send {down %A_ThisMenuItemPos%}
Return

***se eu conseguir colocar o enter para acessar as coordenadas dos clicks tanto no menu seletivo igual ao seu como neste meu código me ajudaria muitíssimo e me daria uma vasta possibilidade nos scripts que estou desenvolvendo.

E mais uma vez meus sinceros agradecimentos e acho incrível o empenho para tentar ajudar.

***se quiser posso gravar minha tela e coloco aqui um link para ter uma real ideia de como funciona o script e como pode ser melhorado.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 14 Jun 2020, 14:34
by Hologram
Vamos em partes:
não faz a função de clicar no mouse e trocar o que deveria trocar
Pra clicar com o botão esquerdo do mouse você pode escolher o comando "MouseClick" ou "Send, {LButton}", mas não entendi a parte do "trocar o que deveria trocar"



"Se quiser também as coordenadas podem ser calculadas por uma imagem, ou pixel para não ter que configurar de pc para pc"
Como isso seria feito?
Esse por exemplo tu não usaria as coordenadas pré determinadas, elas seriam setadas pelo ImageSearch, por exemplo:

Code: Select all

ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/item1.png
If (ErrorLevel = 0)
	{
		X_pra_esquerda := PosX + 0 
		Y_pra_baixo := PosY + 0 
		MouseMove, %X_pra_esquerda%, %Y_pra_baixo% 
		Mouseclick
	}
Aqui aconteceu uma procura de uma determinada imagem de um diretório, (no caso do scritp a cima, o diretória seria o mesmo do arquivo.ahk), asssim que ele encontrar a imagem, ele depositará as coordendas nas variaveis "Posx" e "PosY".
e se de fato elas estiverem presentes o ErrorLevel mudará para 1, ativando tudo oq estiver entre os colchetes, no nosso caso dentro dos colchetes ele vai ler as variaveis "PosX" e "PosY" e jogar para o "X_pra_esquerda" e "Y_pra_baixo := PosY + 0" em seguida na terceira linha dentro dos colchetes, o mouse move vai ler essas coordenadas e mover o mouse para lá, e por fim clicar nesse local


Edit:

Code: Select all

^3:: ; Comando pra abrir o menu
Gui, Show, w130 h220, Menu Seletivo ; Responsavel por fazer aparecer uma tela de fundo
Gui, Add, ListBox, r13  vSELECIONADO x13 y20 w105, Item1|Item2 ; Lista com os itens para escolher
SoundPlay, %A_ScriptDir%\iniciar.mp3
Return

 ; Botao Executar Criado Junto A ListBox
Enter:: ; Ao Apertar Enter Ele Irá Mover O Mouse Segundo O Item Selecionado
Gui, submit, nohide
If (SELECIONADO = "Item1") ;Qual Item Foi Selecionado
{ 
	SoundPlay, %A_ScriptDir%\item1.mp3
	MouseMove, 548, 318
	Sleep, 100
	Send, {LButton}
}
Else if (SELECIONADO = "Item2") ;Qual Item Foi Selecionado
{ 	
	SoundPlay, %A_ScriptDir%\item2.mp3
	MouseMove, 427, 441
	Sleep, 100
	Send, {LButton}
}
return


Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 08:15
by thomasmessi
Oi nobre amigo bom dia tudo bem?
Tô dando uma trabalheira não é? Mas desde já desculpas.
Então deixa eu tentar explicar.
Como eu já enxerguei um dia perfeitamente e hoje sou cego, vamos colocar na cena uma tabela com 5 colunas de A, B, C, D, E, e 5 linhas 1,2,3,4,5. Só que essa tela que estou tentando fazer um script bem funcional não tem como que não enxergar escolher as opções pois é uma tela que com a tecla tab, setas não tem como nós ouvirmos nada pois o leitor de tela não detecta.

Quando eu tenho a coordenada X, Y da coluna 1 e a coordenada X, Y da linha 1 com o MouseClick eu seleciono o ítem 1.
Se eu faço MouseClick nas coordenadas X, Y para coluna C e linha 5 ele muda pra outro ítem nessa tabela.

Aí que vem o que eu gostaria de melhorar:
Criando um menu como você está tentando ajudar facilitaria por vários motivos
Não seria necessário criar várias e várias teclas de atalhos pois são muitos ítens.
E Criando este menu con os ítens selecionando com seta e apertando ENTER para ir na tabela e selecionar seria muitíssimo útil e perfeito.

Testei seu código mas não trocou.
Notei que quando clico com a tecla Enter o menu que você criou não fecha e não clica para mudar o ítem na tela.
Vou gravar a tela agora pela manhã e mandarei o link aqui para acessar se quiser ter uma noção melhor.

abração nobre amigo.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 09:36
by thomasmessi
aqui está o video da minha tela!

https://drive.google.com/file/d/1lCqgCPDg_XhfKwvetH2wlkuLv7FDakBT/view?usp=sharing

Espero que ajude nos esclarecimentos e mais uma vez, obrigado

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 12:00
by Hologram
https://drive.google.com/file/d/1u9ktsaWu7hNl3wQwlY2RoS7tdljOsp0i/view?usp=sharing

Atualizado:

Code: Select all

^1:: ; Comando pra abrir o menu
Gui, Show, w130 h220, Menu Seletivo ; Responsavel por fazer aparecer uma tela de fundo
Gui, Add, ListBox, r13  vSELECIONADO x13 y20 w105, Item1|Item2 ; Lista com os itens para escolher
SoundPlay, %A_ScriptDir%\iniciar.mp3
Sleep, 100
Send, {Down}{Down}
Return

Enter::
CoordMode, Mouse, Screen 
Gui, submit, nohide
If (SELECIONADO = "Item1") ;Qual Item Foi Selecionado
{ 
CoordMode, Mouse, Screen
	SoundPlay, %A_ScriptDir%\item1.mp3
	MouseMove, 548, 318
	Sleep, 100
	Send, {LButton}
	WinMinimize, Menu Seletivo   
}
Else if (SELECIONADO = "Item2") ;Qual Item Foi Selecionado
{ 	
CoordMode, Mouse, Screen
	SoundPlay, %A_ScriptDir%\item2.mp3
	MouseMove, 427, 441
	Sleep, 100
	Send, {LButton}
	WinMinimize, Menu Seletivo
}
return

^2::
CoordMode, Mouse, Window
MouseGetPos, PosX, PosY
ToolTip,  X:%PosX% Y:%PosY%
return

RButton::
ImageSearch, PossX, PossY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/voltar_ao_menu.png
If (ErrorLevel = 0)
	{
		X_pra_esquerda := PossX + 0 
		Y_pra_baixo := PossY + 0 
		MouseMove, %X_pra_esquerda%, %Y_pra_baixo% 
		Mouseclick
		SoundPlay, %A_ScriptDir%\item3.mp3
	}

return

^3:: 
ExitApp
return

PS: Ja ta arrumado o erro de não minimizar o menu quando clicar em um item da lista
Faz Dowload dessa imagem e deixa junto do arquivo.ahk
voltar_ao_menu.png
voltar_ao_menu.png (398 Bytes) Viewed 3304 times

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 16:01
by thomasmessi
olá boa tarde amigo


E já aproveitando, uma pergunta:
Poderei fazer uma lista com 16 ítens relacionados aas classses?
e depois em uma outra tecla fazer uma lista com 49 itens?

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 16:26
by Hologram
Poderei fazer uma lista com 16 ítens relacionados aas classses
Claro, só alterar aqui:

Code: Select all

Gui, Show, w130 h220, Menu Seletivo ; Responsavel pelo tamanho da tela de fundo
Gui, Add, ListBox, r13  vSELECIONADO x13 y20 w105, Item1|Item2 ; Quantidade de itens que vão ter nessa tela e seus devidos nomes
depois em uma outra tecla fazer uma lista com 49 itens?
Claro, no final desse script, você seta um "return" e pode iniciar o comando de outra tecla

Code: Select all

a::
MsgBox, abrir lista um
return

b::
MsgBox, segunda lista
return

A imagem é só você clicar com o botão direito do mouse e clicar em Guardar Imagem, ou tirar seu próprio print e salvar com o nome de voltar_ao_menu.png

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 16:37
by thomasmessi
Oi boa noite amigo.
Infelizmente ao abrir o menu e apertar enter no item da lista o mouse não se movimenta e não clica na coordenada.
Pedi auxílio ao meu filho pra verificar se os comandos aconteciam na tela, mas não está dando certo.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 15 Jun 2020, 17:18
by Hologram
Após selecionar o item você apertou a tecla Enter? Se sim, você tem certeza absoluta que sua tecla Enter esta funcionando corretamente?

Você esta usando uma versão atualizada de Ahk?

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 16 Jun 2020, 17:26
by thomasmessi
Boa noite amigo, sim meu teclado está perfeito.
Mas aproveitando a a ocasião gostaria de perguntar:
Como alternativa seguindo o mesmo raciocínio, percebi que um menu com tecla appskey pode ser a solução para o meu problema.
Tenho um menu apppskey assim:
Menu, MyMenu, Add, Item1, MenuHandler
Menu, MyMenu, Add, Item2, MenuHandler
Menu, MyMenu, Add ; Add a separator line.

; Create another menu destined to become a submenu of the above menu.
Menu, Submenu1, Add, Item4, MenuHandler
Menu, Submenu1, Add, Item5, MenuHandler

; Create a submenu in the first menu (a right-arrow indicator). When the user selects it, the second menu is displayed.
Menu, MyMenu, Add, Selecionar, :Submenu1

Menu, MyMenu, Add ; Add a separator line below the submenu.
Menu, MyMenu, Add, Item3, MenuHandler ; Add another menu item beneath the submenu.
return ; End of script's auto-execute section.

MenuHandler:
MsgBox You selected %A_ThisMenuItem% from the menu %A_ThisMenu%.
return

^m::Menu, MyMenu, Sho
w

Precisaria apenas que ao clicar em um ítem da lista ele fosse a coordenada mapeada do software que está na minha tela.
Por exemplo:
ítem 1: MouseClick, X450, 580
Item 2 MouseClick 330, 245
Sub menu MouseClick 560, 350
Isso é possível?

abraços.

Re: Preciso de uma ajuda amigos. Menu com caixa seletiva

Posted: 16 Jun 2020, 18:15
by Hologram
Assim?

Code: Select all

Menu, MyMenu, Add, Item1, MenuHandler1
Menu, MyMenu, Add, Item2, MenuHandler2
Menu, MyMenu, Add, Item3, MenuHandler3
return 

MenuHandler1:
{
	MouseMove, 548, 318
}
return

MenuHandler2:
{
	MouseMove, 427, 441
}
return

MenuHandler3:
{
	MsgBox, Coloque mais um MouseMove com novas coordenadas aqui!
}
return

^m::
Menu, MyMenu, Show