Ativar e Desativar script + Programa Específico Topic is solved

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

Moderator: Gio

VadoJMS
Posts: 28
Joined: 20 Oct 2017, 17:36

Ativar e Desativar script + Programa Específico

23 Jan 2018, 10:43

Boa tarde.

Tenho duas dúvidas.

DÚVIDA [1]

Fiz este script simples para trocar algumas teclas para quando eu for jogar:

Home::w
Insert::q
Delete::a

[...]

Para eu não precisar ficar pausando o jogo, caçar o script lá nos ícones da Barra de Tarefas e clicar em exit manualmente e depois abrir o script de novo... Gostaria de saber se existe algum código que eu posso adicionar ao script para ativar e desativar os comandos do script, apenas pressionando uma ou mais teclas.
Exemplo: aperto teclas x + u assim o script fica desativado. Aperto teclas x + h assim o script volta a ser ativado.

DÚVIDA [2]

Uma outra dúvida, peço que quem conseguir me responder, me esclareça sem misturar tudo com a pergunta de cima, por favor. Para eu não me confundir. Haha. :oops:
Tem como eu fazer com que um script funcione em apenas um programa específico? Como?
User avatar
juanmuscaria
Posts: 65
Joined: 29 Oct 2017, 10:53
Location: Brazil
Contact:

Re: Ativar e Desativar script + Programa Específico

23 Jan 2018, 11:08

Boa tarde.
VadoJMS wrote:DÚVIDA [1]
Bem é fácil fazer uma hotkey para pausar o script:

Code: Select all

Home::w
Insert::q
Delete::a
^u::pause ;Ctrl+U ira pausar o script,aperte novamente para voltar ao normal.
VadoJMS wrote:DÚVIDA [2]
Ai você precisa usar o #IfWinActive.
Ex:

Code: Select all

#IfWinActive ,Sem Título - Bloco de notas
F1::
send OI ;o Oi só vai ser mandado se o bloco de notas estiver aberto
Eu não sou profissional no AHK mas espero ter te ajudado :thumbup:
VadoJMS
Posts: 28
Joined: 20 Oct 2017, 17:36

Re: Ativar e Desativar script + Programa Específico

25 Jan 2018, 06:59

Bom dia.

Infelizmente não deu certo comigo.
O primeiro código causou lentidão, não pausa. O segundo não abriu somente no programa específico, nem quando testei no Bloco de Notas. :(
User avatar
Gio
Posts: 1257
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ativar e Desativar script + Programa Específico  Topic is solved

25 Jan 2018, 08:45

Bom dia VadoJMS.

Em relação à DÚVIDA [1], você pode usar o comando Hotkey para criar hotkeys que possam ser habilitadas e desabilitadas. Abaixo, segue um exemplo, onde
são criadas duas hotkeys (chamadas pelas teclas a e b) através do comando Hotkey. Quando você pressiona a, o script escreve c e quando você pressiona b, o script escreve f. Mas se você pressionar Control + U o script desabilita as hotkeys (através de uma nova chamada ao comando Hotkey) fazendo com que a e b escrevam a e b mesmo.

Code: Select all

Hotkey, a, type_c
Hotkey, b, type_f
T := 1 ; Inicialmente, definimos uma variável de estado (ligado/desligado) que começa como "ligado".
Return

type_c:
Send c
Return

type_f:
Send f
return

^u::
T := !T ; Se a variável de estado estiver ligado, será desligada, e se estiver desligada, será ligada.
If T ; E se ela foi ligada na linha anterior...
{
	TrayTip, Hotkeys, Hotkeys ON
	Hotkey, a, type_c, On
	Hotkey, b, type_f, On
}
else ; Mas do contrário (ou seja, se foi desligada...)
{
	TrayTip, Hotkeys, Hotkeys OFF
	Hotkey, a, type_c, Off
	Hotkey, b, type_f, Off
}
Já em relação à DÚVIDA [2], o comando é o #IfWinActive mesmo, mas as vezes a forma como escrevemos o comando pode afetar o seu gatilho de ativação. A sugestão do juanmuscaria foi utilizar o título da janela como gatilho de ativação, mas se não funcionou, eu recomendo utilizar a classe da janela. Abaixo segue um exemplo de uma hotkey F2 que só funciona na janela do bloco de notas (com gatilho através da classe de janela notepad).

Code: Select all

#IfWinActive , ahk_class Notepad
F2::
send OI ;o Oi só vai ser mandado se a janela ativa for do bloco de notas
:arrow: Para encontrar a classe de uma janela alvo, você pode usar o comando WinGetClass.
VadoJMS
Posts: 28
Joined: 20 Oct 2017, 17:36

Re: Ativar e Desativar script + Programa Específico

28 Jan 2018, 14:45

Boa tarde, Gio.

Que legal!

• Sobre a DÚVIDA [1]

Precisei adicionar caractere unicode em algumas teclas, para um determinado programa. No tutorial que encontrei na internet eu tinha que fazer assim:


}
F1::
{
SendInput {①}
}
return
ScrollLock::
{
SendInput {§}
}
return
Insert::
{
SendInput {ﻨ}
}
return


Para pausar o script seria o mesmo processo que foi usado no exemplo das letras “a” e “b”? Tem como eu trocar por unicode de uma forma mais curta, sem precisar deixar entre chaves e todas essas quebras de linha?

• Sobre a DÚVIDA [2]

Eu coloquei #IfWinActive , ahk_class mais o nome do programa e assim deu certo. Muito obrigado! Só não entendi exatamente isso de encontrar a classe de uma janela alvo pelo comando WinGetClass.
User avatar
Gio
Posts: 1257
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ativar e Desativar script + Programa Específico

30 Jan 2018, 15:03

Para pausar o script seria o mesmo processo que foi usado no exemplo das letras “a” e “b”? Tem como eu trocar por unicode de uma forma mais curta, sem precisar deixar entre chaves e todas essas quebras de linha?
Seria mais ou menos o mesmo processo. Você só tem que garantir que o seu editor de texto está configurado para trabalhar em unicode e também que o seu script está sendo executado por uma versão unicode do AutoHotkey. Além disso, o aplicativo que vai receber os caracteres também tem que aceitar a digitação de caracteres unicode.
Só não entendi exatamente isso de encontrar a classe de uma janela alvo pelo comando WinGetClass.
A classe de uma janela nem sempre é o mesmo nome da janela. O comando WinGetClass permite que você encontre a classe da janela alvo a partir do nome da janela ou outra característica da mesma. Então, se você tem uma janela cujo título é "Janela Maçã" e você tentar usar em um comando o gatilho ahk_class Janela Maçã, o comando não vai funcionar. Nesse caso, o mais certo é antes de programar a tarefa, você verificar qual a classe da janela e se descobrir, por exemplo, que ela é chamada "AppleWin32", você depois deve usar essa informação para fazer o gatilho pela classe ahk_class AppleWin32.

Mas no seu caso, se funcionou usando o nome, é porque provavelmente deu sorte de esse ser esse o mesmo nome da classe de janela.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 4 guests