Mouse and keyboard macros and hotkeys.

Principal | Download | Documentação | Changelog | Suporte | Fórum

Tutorial e Visão geral

Traduzido por Ielton Ferreira Carneiro Pinto

Essa breve introdução ajudará você a scriptar seus próprios macros e atalhos imediatamente.

Conteúdo do Tutorial

Criando um script

Cada script é um arquivo de texto sem formatação contendo comandos para ser executados pelo programa (AutoHotkey.exe). Um script também deve conter teclas de acesso (hotkeys) e hotstrings, ou mesmo consisti inteiro dele. Entretanto, na ausência de teclas de acesso(hotkeys) e hotstrings, um script executará seus comandos sequencialmente do topo a base no momento que ele é iniciado.

Para criar um novo script:

  1. Abra o Windows Explorer e selecione um diretório a sua escolha.

  2. Vá no Menu Arquivo e escolha Novo >> AutoHotkey Script (ou Documento de texto).

  3. Escreva o nome para o arquivo assegurando que ele termine com .ahk. Por exemplo: Teste.ahk

  4. Clique com o botão direito do mouse no arquivo e escolha Editar Script.

  5. Em uma nova linha em branco, escreva o seguinte:
    #space::Run www.google.com

O símbolo # significa a tecla Windows, então #space significa segurar a tecla Windows e então pressionar a barra de espaço para ativar uma tecla de acesso (hotkey). O :: significa que o comando subsequente deve ser executado toda vez que essa tecla de acesso (hotkey) é pressionada, nesse caso para ir no web site do Google, para testar esse script, continue com o seguinte:

  1. Salve e feche o arquivo.

  2. No Windows Explorer, dê um duplo clique no script para inicia-lo. Um novo ícone de bandeja aparece.

  3. Mantenha pressionada a tecla Windows e pressione a barra de espaço. Uma página web abre no seu navegador padrão.

  4. Para sair ou editar o script, clique com o botão direito do mouse no ícone da bandeja.

Note: Múltiplos scripts podem ser executados simultaneamente, cada um com seu próprio ícone de bandeja. Furthermore, cada script pode ter múltiplas teclas de acesso (hotkeys) e hotstrings.

Iniciando um programa ou documento

O comando Run é usando para iniciar um programa, documento, URL, ou atalho. Aqui alguns exemplos comuns:

Run Notepad
Run C:\My Documents\Address List.doc
Run C:\My Documents\My Shortcut.lnk
Run www.yahoo.com
Run mailto:someone@somedomain.com

Uma tecla de acesso pode ser atribuida para qualquer um dos exemplos acima incluindo uma hotkey label. No primeiro exemplo abaixo, a atribuição da tecla de acesso é a Win+N, enquanto no segundo é CTRL+ALT+C:

#n::Run Notepad
^!c::Run calc.exe

Os exemplos acima são conhecidos como tecla de acesso (hotkey) de linha única por que cada uma contém somente um comando. Para ter mais do que um comando executado por uma tecla de acesso (hotkey), coloque a primeira linha abaixo da definição da tecla de acesso (hotkey) e faça um return na última linha, por exemplo:

#n::
Run http://www.google.com
Run Notepad.exe
return

Se o programa ou documento a ser executado não é associado ao sistema, especifique seu caminho completo para pega-lo e inicia-lo:

Run %A_ProgramFiles%\Winamp\Winamp.exe

Nos exemplos acima, %A_ProgramFiles% é uma variável embutida. Use-o preferencialmente do que algo como C:\Arquivos de Programas, o script se torna mais portável, significa que ele será mais amigavél para executar em outros computadores. Note: O nome dos comandos e variáveis não são diferenciados por caracteres maiúsculos e minúsculos. Por exemplo, “Run” é o mesmo que “run”, e “A_ProgramFiles” é o mesmo que “a_programfiles”.

Para ter um script que espere pelo fechamento do programa ou documento antes de continuar, use RunWait ao invés de Run. No seguinte exemplo, o comando MsgBox não será executado até que o usuário feche o Notepad:

RunWait Notepad
MsgBox O usuário The usuário terminou (o Notepad foi fechado).

Para aprender mais sobre iniciar programas -- tal como passar parâmetros, especificar o diretório de trabalho, e
descobrir o código de saída de um programa -- clique aqui.

Enviando atalhos de teclado (keystrokes) e cliques de mouse

Os atalhos de teclado são enviados para a janela ativa (a primeira) por uso do comando Send. No seguinte exemplo, a combinação Win+S se torna uma tecla de acesso para digitar uma assinatura (assegurando que uma janela tal como um editor ou mensagem de email está ativa antes de pressionar Win+S):

#s::
Send Sinceramente,{Enter}John Smith
return

No exemplo acima, todos os caracteres são enviados literalmente, exceto {Enter}, que simula um pressionamento da tecla Enter. O próximo exemplo ilustra alguns dos outros caracteres especiais comumente usados:

Send ^c!{tab}colado:^v

A linha acima envia um Control+C seguido por um Alt+Tab seguido pela sequência “pasted:” seguido por um Control+V. Veja o comando Send para uma lista completa de caracteres especiais e teclas.

Finalmente, atalhos de teclado (keystrokes) também podem ser enviados em resposta para diminuir sua digitação, que também são conhecidas como hotstrings. Por exemplo, quando você digita Btw seguido por um espaço ou vírgula, a seguinte linha irá sobrescreve-lo com “By the way”:

::btw::by the way


Cliques de Mouse
:
Para enviar um clique de mouse para uma janela, primeiro é necessário determinar as coordenadas X e Y, onde o clique deve ocorrer. Isso pode ser feito igualmente com o AutoScriptWrite ou Window Spy, que estão inclusos no AutoHotkey, o passo seguinte é aplicado ao método Window Spy:

  1. Execute o Window Spy através do ícone de bandeja no menu do programa ou pelo menu Iniciar.

  2. Ative a janela do seu interesse clicando na sua barra de título, usando Alt-Tab, ou outros meios (Window Spy ficará “sempre em primeiro plano” por projeto).

  3. Mova o cursor do mouse para a posição desejada na janela alvo e anote as coordenadas do mouse exibidas pelo Window Spy (ou pressione Shift-Alt-Tab para ativar o Window Spy então ele “congela” as coordenadas podendo ser copiadas e coladas).

  4. Aplique as coordenadas descobertas acima no comando Click, o seguinte exemplo clica com o botão esquerdo do mouse:
    Click 112, 223

Para mover o mouse sem clicar, use MouseMove. Para arrastar o mouse, use MouseClickDrag.

Ativando e manipulando janelas

Para ativar uma janela (faça ela a primeira), use WinActivate. Para detectar se uma janela existe, use IfWinExist ou WinWait. O seguinte exemplo ilustra esses comandos:

IfWinExist Sem título - Notepad
{
        WinActivate
}
else
{
        Run Notepad
        WinWait Sem título - Notepad
        WinActivate
}

O exemplo acima primeiro procura por qualquer janela existente cujo título inicia com “Sem título – Notepad” (diferencia maiúsculas de minúsculas). Se a tal janela é encontrada, ela é ativada. Caso contrário, o Notepad é executado e o script espera a janela "Sem título" aparecer, na qual o tempo é ativado. O exemplo acima também utiliza a última janela encontrada para evitar precisar especificar o título da janela com cada WinActivate.

São alguns outros comandos de janelas comumente usados:

Pegando a entrada do usuário com MsgBox, InputBox, etc.

O seguinte exemplo mostra uma caixa de diálogo com dois botões (SIM e NÃO):

MsgBox, 4, , Você gostaria de continuar?
IfMsgBox, Não
        return
; Caso contrário, o usuário escolher SIM.
MsgBox Você pressionou SIM.

Use o comando InputBox para avisar o usuário para digitar uma sequencia de texto. Use FileSelectFile ou FileSelectFolder para o usuário poder selecionar um arquivo ou diretório. Para tarefas mais avançadas, use o comando Gui para criar formulários de data customizados e interfaces para usuários.

Dica: Você deve ter notado de outros exemplos que a primeira vírgula de qualquer comando pode ser omitida. Por exemplo:

MsgBox Isso está ok.
MsgBox, Isso está ok também (tinha uma vírgula explicita).

Usando variáveis e a área de transferência

Uma variável é uma área da memória em que o script armazena texto. Apesar de todas as variáveis serem armazenadas como sequência de caracteres, uma variável contendo somente dígitos (com um ponto decimal opcional) é automáticamente convertida para um número quando uma operação matemática ou comparação solicita ela. Reciprocamente, o resultado de uma operação matemática é convertida de volta por uma string quando ela precisa ser armazenada em uma variável.

Com a exceção de variáveis locais em funções, todas as variáveis são globais; isso é, seu conteúdo pode ser lido ou alterado por qualquer parte do script. Por hábito, variáveis não são declaradas; elas vem a existir simplesmente pelo uso delas (cada variável inicia desativada ou vázia/em branco).

Para declarar uma string a uma variável, siga esses exemplos:

MyVar1 = 123
MyVar2 = minha string

Para comparar o conteúdo de uma variável a um número ou sequência de caracter, siga esses exemplos:

if MyVar2 = minha string
{
        MsgBox MyVar2 contém a string "minha string".
}
if MyVar1 >= 100
{
        MsgBox MyVar1 contém %MyVar1%, que é um número maior ou igual a 100.
}

Na linha MsgBox acima, note que a segunda ocorrência da MyVar1 é fechada com sinal de porcentagem. Isso mostra o conteúdo da MyVar1 naquela posição. A mesma técnica pode ser usada para copiar o conteúdo de uma variável para outra, por exemplo:

MyVarConcatenated = %MyVar1% %MyVar2%

A linha acima armazena a string “minha string 123” (sem aspas) na variável MyVarConcatenated.

Para comparar o conteúdo de uma variável com de outra, considere o exemplo:

if (ItemCount > ItemLimit + 1)
{
        MsgBox O valor em ItemCount, que é %ItemCount%, é maior do que %ItemLimit% + 1.
}

Note que a primeira linha do exemplo acima contém parênteses. Os parênteses significam que a declaração if contém uma expressão. Sem eles, aquela linha seria considerada uma "declaração if sem expressão", e por isso ela precisava de sinais de porcentagem em volta do ItemLimit. De maneira que as declarações if são limitadas para um único operador de comparação; Isso é, ele não pode conter operadores matemáticos ou conjunções tais como "AND" e "OR".


Math
: Para efetuar uma operação matemática, use o operador dois pontos-igual (:=) para atribuir o resultado de uma expressão a uma variável como no exemplo abaixo:

NetPrice := Price * (1 - Discount/100)

Veja em expressões uma lista completa de operadores matemáticos.


Clipboard: A variável chamada Clipboard é especial por que ela contém o texto atual da área de transferência do Windows. Ainda assim, ele pode ser usado como se ela fosse uma variável normal. Por exemplo, a seguinte linha mostra o conteúdo atual da sua área de transferência:

MsgBox %clipboard%

Para alterar a área de transferência, considere o seguinte exemplo, que sobrescreve o conteúdo atual da área de transferência com novo texto:

clipboard = Uma linha do texto.`r`nA segunda linha do texto.`r`n

Acima, `r e `n (acentos seguidos das letras "r" e "n") são usados para indicar dois caracteres especiais: retorno de carro e avanço de linha. Esses dois caracteres iniciam uma nova linha como se o usuário tivesse pressionado a tecla Enter.

Para anexar texto na Clipboard (ou qualquer outra variável), siga o seguinte exemplo:
clipboard = %clipboard% e aqui está o texto para anexar.

Veja as sessões clipboard e variáveis para mais detalhes.

Repeating a series of actions over and over

Para executar alguma coisa mais do que uma vez consecutiva, um loop é a resposta. O seguinte loop mostra uma MsgBox três vezes:

Loop 3
{
        MsgBox Essa janela será mostrada três vezes.
}

Você poderia também especificar uma variável após a palavra Loop, que é útil em situações onde o número da interação é determinado por algum lugar dentro do script:

Loop %RunCount%
{
        Run C:\Check Server Status.exe
        Sleep 60000  ; Aguarda 60 segundos.
}

Acima, o loop é executado um número especificado de vezes a menos que RunCount contenha 0, nesse caso o loop é completamente omitido.

Um loop também pode ser finalizado por ele mesmo quando uma ou mais condições mudam. O seguinte exemplo clica com o botão esquerdo do mouse repetidamente enquanto o usuário está segurando a tecla F1:

$F1::  ; Faz a tecla F1 uma tecla de acesso (hotkey) (o símbolo $ facilita o modo "P" do GetKeyState abaixo).
Loop  ; Visto que nenhum número é especificado nele, isso é um loop infinito a menos que o "break" ou "return" sejam encontrados dentro dele.
{
        if not GetKeyState("F1", "P")  ; Se essa declaração é verdadeira, o usuário soltou fisicamente a tecla F1.
                break  ; Para o loop.
        ; Caso contrário (já que o "break" acima não foi executado), mantenha o clique do mouse
        Click  ; Clica com o botão esquerdo do mouse na posição atual do cursor.
}
return

O exemplo acima funciona de forma idêntica para o que algumas vezes é chamado um loop "while...do". A frase "while...do" refere-se ao fato que esse loop faz alguma coisa repetidamente while(enquanto) uma certa condição permanesse verdadeira. Nesse caso, o loop continua clicando com o botão esquerdo do mouse enquanto a tecla F1 está pressionada. Quando o usuário pressiona a tecla F1, o loop detecta isso e para ele mesmo pelo comando break. O Break faz a execução pular para a linha subsequente ao fechamento das chaves do loop.

Os exemplos acima mostram loops de propósito geral. Para mais deveres específicos, considere um dos seguintes loops:

File-reading/writing loop: Retorna as linhas de um arquivo de texto, um de cada vez. Isso pode ser usado para transformar um arquivo em um formato diferente em uma base linha por linha. Ele pode também ser usado para procurar por linhas que correspondam ao seu critério.

Loop (Arquivos e diretórios): Obtém arquivos ou diretórios especificados, um de cada vez. Isso permite uma operação ser efetuada em cada arquivo ou diretório que satisfaça seu critério.

Parsing loop: Retorna uma substring de uma string, uma de cada vez. Isso permite uma string tal como "Vermelho, Verde e Azul" ser facilmente quebrada em três partes.

Registry loop: Recupera o conteudo do registro especificado na sub-chave, um item de cada vez.

Manipulando arquivos e diretórios

Para adicionar texto no fim de um arquivo (ou criar um novo arquivo), use FileAppend como mostra o seguinte exemplo. Note que ele usa `n (avanço de linha) para iniciar uma nova linha do texto subsequente:

FileAppend, Uma linha de texto anexada.`n, C:\Meus documentos\Meu arquivo de texto.txt

Para sobrescrever um arquivo existente, use FileDelete antes do FileAppend. Por exemplo:

FileDelete, C:\Meus documentos\Meu arquivo de texto.txt

São alguns outros comandos de arquivo e diretório comumente usados:

Visão geral de outros recursos

Veja a lista de comandos para um visão geral de cada comando.

 


Principal | Download | Documentação | Changelog | Suporte | Fórum