# Perguntas Frequentes Respondidas (FAQ)

## Tabela de Conteúdos

Sintaxe da linguagem

- Quando as aspas são usadas com comandos e seus parâmetros?
- Quando exatamente os nomes de variáveis são envolvidos em sinais de porcentagem?
- Quando sinais de porcentagem e vírgulas devem ser escapados?

Solução de Problemas

- O que posso fazer se o AutoHotkey não quer ser instalado?
- Com faço para recuperar as opções do clique com o botão direito em arquivos .ahk?
- Por que algumas linhas nunca são executadas no meu script?
- Por que meu script não funciona no Windows xxx mesmo ele tendo funcionado em uma versão anterior?
- Como faço para contornar problemas causados pelo User Account Control (UAC)?
- Não posso editar meu script através do ícone de bandeja porque ele não inicia devido a um erro. Posso encontrar meu script em algum outro lugar?
- Como faço para encontrar e resolver erros no meu código?
- Por que o comando Run não é capaz de iniciar meu jogo ou programa?
- Por que os caracteres não-ASCII são mostrados ou enviados incorretamente?
- Por que Hotstrings, Send e MouseClick não funcionam em certos jogos?
- Como a performance pode ser melhorada para jogos ou em outros momentos em que a CPU está sobre-carregada?
- Meu antivírus considera o AHK como um malware. Ele realmente contém um vírus?

Tarefas Comuns

- Onde posso encontrar a build oficial ou lançamentos antigos?
- Posso executar o AHK a partir de um dispositivo USB?
- Como a saída de uma operação de linha de comando pode ser recuperada?
- Como um script pode fechar, pausar, suspender ou recarregar outros scripts?
- Como uma ação repetitiva pode ser parada sem encerrar o script?
- Como a ajuda contexto-sensitiva para o AutoHotkey pode ser usada em qualquer editor?
- Como detectar quando uma página da web termina de carregar?
- Como datas e momentos podem ser comparados ou manipulados?
- Como faço para enviar a data e/ou hora atual?
- Como faço para enviar texto em uma janela que não está ativa ou não está visível?
- Como o Winamp pode ser controlado mesmo quando não está ativo?
- Os nomes dos botões da Caixa de Diálogo podem ser alterados?
- Como faço para alterar o editor padrão, aquele que é acessado através do menu de contexto ou o ícone de bandeja?
- Como faço para salvar os conteúdos do meu GUI de variáveis associadas?
- Posso desenhar alguam coisa com o AHK?
- Como faço para iniciar uma ação quando uma janela aparece, fecha ou torna-se [in]ativa?

Hotkeys, Hostrings e Remapeamento

- Como faço para colocar minhas hotkeys e hotstrings em efeito automaticamente sempre que eu iniciar meu computador?
- Estou tendo problemas para fazer meus botões do mouse funcionarem como hotkeys. Algum conselho??
- Como as teclas TAB e SPACE podem ser definidas como hotkeys?
- Como as teclas ou botões do mouse podem ser remapeadas para que elas tornem-se teclas diferentes?
- Como faço para detectar o pressionamento duplo de uma tecla ou botão?
- Uma hotkey ou hotstring pode ser exclusiva para certo(s) programa(s)? Em outras palavras, quero que uma certa tecla faça o que normalmente faz, exceto quando uma janela específica estiver ativa.
- Como uma tecla prefixo de combinação pode ser feita para realizar sua função nativa ao invés de não fazer nada?
- Como as teclas de atalho embutidas do Windows, como Win+U (Gerenciador de Utilidade) e Win+R (Executar) podem ser alteradas ou desabilitadas?
- Posso usar wildcards ou expressões regulares em Hotstrings?
- Como faço para usar uma hotkey que não está no meu layout de teclado?
- Meu teclado numérico possui uma tecla especial 000. É possível torná-la uma hotkey?

## Sintaxe da linguagem

### Quando as aspas são usadas com comandos e seus parâmetros?

Aspas duplas (") possuem um significado especial apenas com expressões.. Em todos os outros lugares elas são tratadas literalmente como se elas fossem caracteres normais. Entretanto, quando um script executa um programa ou documento, o sistema operacional normalmente exige aspas ao redor de qualquer parâmetro de linah de comando que contenha espaços, como neste exemplo: `Run, Notepad.exe "C:\Meus Documentos\Lista de Endereços.txt"`.

### Quando exatamente os nomes de variáveis são envolvidos em sinais de porcentagem?

Os nomes de variáveis sempre são envolvidos em sinais de porcentagem, exceto nos casos mostrados em negrito abaixo:

1) Em parâmetros que são variáveis de entrada ou saída:: `StringLen, OutputVar, InputVar`
2) Do lado esquerdo de uma atribuição: `Var = 123abc`
3) Do lado esquerdo de uma declaração if tradicional (não-expressão): `If Var1 < %Var2%`
4) Em qualquer lugar em expressões. Por exemplo:

    If (Var1 <> Var2)
        Var1 := Var2 + 100

Para explicações adicionais sobre como os sinais de porcentagem devem ser usados, veja as páginas Sintaxe Legado e Variáveis Dinâmicas. Sinais de porcentagem também podem ter outros significados:

- O sinal de porcentagem não fechado faz com que um parâmetro de comando seja interpretado como uma expressão.
- Sinas de porcentagem escapados (``%`) e sinais de porcentagem envolvidos em strings literais não possuem significado especial (eles são interpretados literalmente como sinais de porcentagem).

### Quando os sinais de porcentagem e as vírgulas devem ser escapados?

Sinais de porcentagem literais devem ser escapados por meio de uma aspa simples (') Por exemplo: `MsgBox A porcentagem atual é de 25`%.` vírgulas literais também devem ser escapadas (``,`) exceto quando usadas em MsgBox ou o último parâmetro de qualquer comando (neste caso o acento é permitido, mas não necessário).

Quando vírgulas ou sinais de porcentagem são envolvidos em aspas dentro de uma expressão o acento é permitido mas não necessário. Por exemplo: `Var := "15%"`.

## Solução de Problemas

### O que posso fazer se o AutoHotkey não quer ser instalado?

Erro com o7-zip: Use o 7-zip ou um programa compatível para extrair os arquivos de instalação do instalador EXE, então execute setup.exe ou Installer.ahk (arraste e solte o Installer.ahk no AutoHotkey32.exe).

O Instalador do AutoHotkey vem compactado como um arquivo 7-zip auto-extraível que tenta extrair para o diretório do usuário e executar um script compilado. Às vezes as políticas do sistema ou outros fatores impedem que os arquivos sejam extraídos ou executados. Normalmente, nesses casos a mensagem "7-zip Error" é mostrada. Extrair manualmente os arquivos para um diretório diferente pode ajudar.

Instalação travada: Se a janela de instalação ficar branca ou não aparecer nada, tente uma ou ambas as opções seguintes:

- Segure `Ctrl` ou `Shift` quando o instalador iniciar. Se você possuir um prompt UAC, segure `Ctrl` ou `Shift` assim que você clicar em Yes/Continue. Você deve receber uma solicitação perguntando se você quer instalar com as opções padrão.
- Instalação usando opções da linha de comando. Se você extraiu manualmente os arquivos do Installer EXE, use `setup.exe /S` ou `AutoHotkeyU32.exe Installer.ahk /S`.

Outro: As sugestões acima abordam a maioria dos problemas comuns. Para assistência adicional, publique nos fóruns.

### Com faço para recuperar as opções do clique com o botão direito em arquivos .ahk?

Normalmente se o AutoHotkey estiver instalado, clicar com o botão direito em um arquivo script do Autohotkey (.ahk) deve resultar nas seguintes opções:

- Run Script
- Compile Script (dependendo da opção de instalação Install script compiler )
- Edit Script
- Run as administrator (Se o UAC estiver habilitado quando o AutoHotkey for instalado)
- Run with UI Acess(Se a opção foi habilitada durante a instalação)

Às vezes essas opções são substituídas por definições do perfil de usuário atual, como se o Abrir com fosse usado para alterar o programa padrão para a abertura de arquivos .ahk. Isso pode ser resolvido deletando a seguinte chave de registro:

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ahk\UserChoice

Isso pode ser feito aplicando esse patch de registro.

Também pode ser necessário reparar os valores de registro padrão, seja reinstalando o AutoHotkey ou executando o AutoHotkey setup (a partir do menu Iniciar) e selecionando aplicar que fica próximo ao topo da janela.

### Por que algumas linhas nunca são executadas no meu script?

Quaisquer linhas que você quiser executar imediatamnete quando o script inicia deve aparecer no topo do script, priorizando a primeira hotkey, hotstring, ou Return. Para detalhes, veja a página seção de auto-execução.

Além disso, uma hotkey que executa mais do que uma linha deve listar sua primeira linha abaixo da hotkey, e não na mesma linha. Por exemplo:

    #space::  ; Win+Spacebar
    Run Notepad
    WinWaitActive Untitled - Notepad
    WinMaximize
    return

### Por que meu script não funciona no Windows xxx mesmo ele tendo funcionado em uma versão anterior?

Há muitas variações desse problema, como:

- Atualizei meu computador/Windows e agora meu script não funciona mais.
- Hotkeys/hotstrings não funcionam quando um programa executado como administrador está ativo.
- Algumas janelas se recusam a serem automatizadas (por exemplo, o Gerenciador de Dispositivos ignora o comando Send).

Se você trocou de sistema operacional, é provável que alguma outra coisa também tenha sido alterada e pode estar afetando seu script. Por exemplo, se você comprou um novo computador, podem haver driver ou outros softwares diferentes instalados. Se você também atualizou para uma nova versão do AutoHotkey, encontre qual versão você possuía antes e verifique o changelog e as notas de compatibilidade.

SoundGet, SoundSet, SoundGetWaveVolume e SoundSetWaveVolume se comportam de maneiras diferentes no Windows Vista e versões posteriores do que em versões anteriores. Em particular, os números dos dispositivos são diferentes e alguns componentes podem estar indisponíveis. O comportamento depende dos drivers de aúdio, que são necessariamente diferentes daqueles que são usados no Windows XP. O script de análise de chip de sompode ser usado para encontrar os números corretos do dispositivo.

Isso também remete a seguinte pergunta:

### Como faço para contornar problemas causados pelo User Account Control (UAC)?

O Controle de Conta de Usuário (UAC) é uma causa comum de problemas, especialmente quando se troca o sistema operacional do Windows XP/VISTA/7 para o Vista/7/8/10. Embora ele esteja presente no Windows Vista e posterior, ele está habilitado por padrão em novos sistemas ou instalações e é mais difícil desabilitá-lo no Windows 8 e posteiror.

Por padrão, o UAC protege programas "elevados" (que são programas que estão sendo executados como administrador) de serem automatizados por programas não-elevados, visto que isso permitiria que ele burlassem as restrições de segurança. As hotkeys também são bloqueadas, por exemplo, um programa não-elevado não pode espiar uma entrada destinada para um programa elevado.

O UAC também pode impedir o funcionamento de SendPlay e BlockInput.

As soluções alternativas são as seguintes:

- Habilite a opção Add 'Run with UI Acess' to context menus na configuração do AutoHotkey. Essa opção pode ser habilitada ou desabilitada sem reinstalar o AutoHotkey simplesmente re-executando o AutoHotkey Setup através do menu Iniciar. Uma vez habilitado, inicie seu arquivo script clicando com o botão direito do mouse sobre ele e selecionando Run with UI Acess, ou use uma linha de comando como `"AutoHotkeyU32_UIA.exe" "Seu script.ahk"` (mas inclua os caminhos completos).
- Execute o script como administrador. Perceba que isso faz com que quaisquer programas iniciados pelo script também sejam executados como administrador e podem exigir que o usuário aceite uma solicitação de aprovação quando iniciar o script.
- Desabilite a política de segurança local "Run all administrators in Admin Approval Mode" (não recomendado).
- Desabilite o UAC completamente. Isso não é recomendado, e nem mesmo possível no Windows 8 ou superior.

### Não posso editar meu script através do ícone de bandeja porque ele não inicia devido a um erro. O que eu faço?

Você precisa resolver o erro em seu script antes de obter seu ícone de bandeja de volta. MAs primeiro, você precisa encontrar o arquivo scirpt.

Procure por AutoHotkey.ahk nos seguintes diretórios:

- Na pasta Documentos (ouMeus Documentos.
- O diretório que você instalou o AutoHotkey, normalmente C:\Program Files\AutoHotkey. Se você estiver usando o AutoHotkey sem tê-lo instalado, procure no diretório que contenha o AutoHotkey.exe.

Se você estiver executando outro Autohotkey executável diretamente, o nome do script depende do executável. Por exemplo, se você estiver executando o AutoHotkeyU32.exe, procure por AutoHotkeyU32.ahk. Note que dependendo das configurações do seus sistema, a parte ".ahk" pode estar oculta, mas o arquivo deve ser um ícone parecido com esse:

Normalmente você pode editar um script clicando com o direito sobre ele e selecionando Edit Script. Se isso não funcionar, você pode abrir o arquivo no Bloco de Notas ou outro editor.

Se você iniciar o AutoHotkey a partir do menu Iniciar ou executar o AutoHotkey.exe diretamente (sem parâmetros de linha de comando), ele procurará por um script nas localizações mostradas acima. Alternativamente, você pode criar um arquivo script (algumacoisa.ahk) em qualquer lugar que quiser, e executar o arquivo script ao invés de executar o AutoHotkey.

Veja também O parâmetro "Script Filename" da linha de comando" e Portabilidade do AutoHotkey.exe.

### Como faço para encontrar e resolver erros no meu código?

Para scripts simples, veja a página Depurando um script. Para mostrar o conteúdo de uma variável, use o comando MsgBox ou ToolTip. Para scripts complexos, veja a página Depuração Interativa.

### Por que o comando Run não é capaz de iniciar meu jogo ou programa?

Alguns porgramas precisam ser iniciados em seus próprios diretórios (se estiver, isso é o melhor a ser feito) Por exemplo:

    Run, %A_ProgramFiles%\Alguma Aplicação\App.exe, %A_ProgramFiles%\Alguma Aplicação

Se o programa que você está tentando iniciar está em `>%A_WinDir%\System32` e você está usando o AutoHotkey 32-bit em um sistema 64-bit, o Sistema de Redirecionamento de Arquivo pode estar interferindo. Para solucionar isso, use `%A_WinDir%\SysNative` no lugar; isso é um diretório virtual visível apenas para programas 32-bit sendo executados em sistemas 64-bit.

### Por que os caracteres não-ASCII são mostrados ou enviados incorretamente?

Resposta curta: Salve o arquivo como UTF-8 with BOM.

Embora o AutoHotkey suporte textos Unicode, ele é otimizado para compatibilidade, o que quer dizer que o padrão é a codificação ANSI oa invés da mais internacionalmente recomendada UTF-8. O AutoHotkey não irá reconhecer um arquivo UTF-8 a não ser que ele comece com uma marca de ordem de byte.

Em outras palavras, arquivos UTF-8 que não tem uma marca de ordem de byte são mal interpretados, fazendo com que caracteres não-ASCII sejam decodificados incorretamente. Para resolver isso, salve o arquivo como UTF-8 with BOM ou adicione o alternador de linha de comando /CP65001.

Para salvar como UTF-8 with BOM no Bloco de Notas, selecione UTF-8 a partir do menu Encoding no diálogo Salvar Como.

PAra ler outros arquivos UTF-8 que não possuem uma marca de ordem de byte, use `FileEncoding UTF-8-RAW`, a opção `*P65001` com FileRead, ou `"UTF-8-RAW"` para o terceiro parêmtro de FileOpen(). O sufixo `-RAW` pode ser omitido, mas nesse caso quaisquer novos arquivos criados terão uma marca de ordem de byte.

Note que arquivos INI acessados com os comandos padrão INI não suportam UTF-8; eles precisam ser salvos como ANSI ou UTF-16.

### Por que as Hotstrings, Send, and Click não têm efeito em certos jogos?

Nem todos os jogos permitem que o AHK envie teclas e cliques ou receba as cores dos pixels.

Mas há algumas alternativas, tente todas as soluções mencionadas abaixo. Se todas essas falharem, talvez não seja possível que o AHK funcione com seu jogo. Às vezes os jogos possuem um hack e uma medida de prevenção de trapaças, como o GameGuard e HackShield. Se eles tiverem, existe uma grande chance que o AutoHotkey não funcione com aqueles jogos.

- Use SendPlay através do comando SendPlay, SendMode Play e/ou a opção hotstring SP.

      SendPlay, abc

      SendMode, Play
      Send, abc

      :SP:ap::a propósito; or

      #Hotstring SP
      ::ap::a propósito

  OBS: SendPlay pode não ter efeito no Windows Vista ou superior se o Controle de Conta de Usuário estiver habilitado, mesmo se o script estiver sendo executado como administrador.

- Aumente o SetKeyDelay. Por exemplo:

      SetKeyDelay, 0, 50
      SetKeyDelay, 0, 50, Play

- Tente o comando ControlSend, que pode funcionar nos casos onde os outros modos Send falham:

      ControlSend,, abc, game_title

- Tente o evento down e up de uma tecla com vários métodos send:

      Send {KEY down}{KEY up}

- Tente o evento down e up de uma tecla com um Sleep entre eles:

      Send {KEY down}
      Sleep 10 ; tente vários milisegundos
      Send {KEY up}

### Como a performance pode ser melhorada para jogos ou em outros momentos em que a CPU está sobre-carregada?

Se as Hotkeys, Clicks, ou Sends de um script estão perceptivelmente mais lentos que o normal enquanto a CPU está sobrecarregada, aumentar a prioridade do processo do script pode ajudar. Para fazer isso, inclua a seguinte linha no topo do script:

    Process, Priority, , High

### Meu antivírus marcou o AutoHotkey ou um script compilado como um malware. Ele realmente é um vírus?

Embora seja possível que o arquivo esteja infectado, é muito frequente que esses alertas sejam falsos positivos, o que quer dizer que o antivírus está cometendo um engano. Uma sugestão comum é carregar o arquivo para um serviço online como o virustotal ou Jotti e ver o que os outros antivírus têm a dizer. Se estiver em dúvida, você pode enviar o arquivo para o fornecedor do seu software antivírus para confirmação. Isso pode ajudar a nós e outros usuários do AutoHotkey, visto que o fornecedor pode confirmar se é um falso positivo e consertar seu produto para funcionar bem com o AutoHotkey.

Falsos positivos podem ser bem comuns para scripts compilados que foram comprimidos, assim como o UPX (padrão para o AutoHotkey 1.0, mas não 1.1) ou MPRESS (opcional para o AutoHotkey 1.1). Como a instalação padrão do AutoHotkey não inclui um compressor, scripts compilados não são comprimidos por padrão.

## Tarefas Comuns

### Onde posso encontrar a build oficial ou lançamentos antigos?

Veja a página de download do AutoHotkey.

### Posso executar o AHK a partir de um dispositivo USB?

Veja a página Portabilidade do AutoHotkey.exe.

Note que quando você compila um script que usa as bibliotecas de funções auto-incluídas, o AutoHotkey.exe e a pasta Lib devem um nível acima do Ahk2Exe.exe (por exemplo, \AutoHotkey.exe vs \Compiler\Ahk2Exe.exe). Note também que o Ahk2Exe salva as configurações para a seguinte chave de registro:`HKCU\Software\AutoHotkey\Ahk2Exe`. O compilador por si próprio (Ahk2Exe) não é necessário para executar scripts.

### Como a saída de uma operação de linha de comando pode ser recuperada?

Testes mostram que devido a um arquivo de caching, um arquivo temporário pode ser muito rápido para saídas relativamente pequenas. Na verdadeo, se o arquivo for deletado imediatamente após o uso, ele não será gravado no disco. Por exemplo:

    RunWait %ComSpec% /c dir > C:\My Temp File.txt
    FileRead, VarToContainContents, C:\My Temp File.txt
    FileDelete, C:\My Temp File.txt

Para evitar o uso de um arquivo temporário (especialmente se a saída é grande), considere usar o método Shell.Exec() com mostrado nos exemplos para o comando Run.

### Como um script pode fechar, pausar, suspender ou recarregar outros scripts?

Primeiro, aqui está um exemplo que fecha outro script:

    DetectHiddenWindows On  ; Permite que um script com a janela principal escondida seja detectado.
    SetTitleMatchMode 2  ; Dispensa a necessidade de especificar o caminho completo para o arquivo abaixo.
    WinClose Script's File Name.ahk - AutoHotkey  ; Atualiza isso para refletir o nome do script (case sensitive).

Para suspender, pausar ou recarregar outro script, substitua a última linha acima por uma dessas:

    PostMessage, 0x111, 65305,,, Script's File Name.ahk - AutoHotkey  ; Suspende.
    PostMessage, 0x111, 65306,,, Script's File Name.ahk - AutoHotkey  ; Pausa.
    PostMessage, 0x111, 65303,,, Script's File Name.ahk - AutoHotkey  ; Recarrega.

### Como uma ação repetitiva pode ser parada sem encerrar o script?

Para pausar ou resumir todo o script ao pressionar uma tecla, atribua uma hotkey para o comando Pause como nesse exemplo:

    ^!p::Pause  ; Pressione Ctrl+Alt+P para pausar. Pressione novamente para resumir.

Para impedir uma ação que está sendo repetida dentro de um Loop, considere os seguintes exemplos funcionais, que são hotkeys que iniciam e param suas próprias ações repetitivas. Em outras palavras, pressionar a hotkey uma vez irá iniciar o Loop. Pressionar a mesma hotkey novamente irá interrompê-lo.

    #MaxThreadsPerHotkey 3
    #z::  ; Win+Z hotkey (altere essa hotkey para se adequar às suas preferências).
    #MaxThreadsPerHotkey 1
    if KeepWinZRunning  ; Isso significa que uma tarefa subjacente já está executando o loop abaixo.
    {
        KeepWinZRunning := false  ; Sinaliza para que o loop da tarefa pare.
        return  ; Finaliza  essa tarefa para que o tópico abaixo seja resumido e veja a alteração feita pela linha de cima .
    }
    ; Caso contrário:
    KeepWinZRunning := true
    Loop
    {
        ; As próximas quatro linhas são a ação que você quer repetir (atualize-as para se adequarem às suas preferências):
        ToolTip, Pressione Win-Z para parar.
        Sleep 1000
        ToolTip
        Sleep 1000
        ; Mas deixe todo o restante abaixo inalterado.
        if not KeepWinZRunning  ; O usuário sinalizou para o loop parar ao pressionar Win-Z novamente.
            break  ; Para o loop completamente.
    }
    KeepWinZRunning := false  ; Reinicia a preparação para o próximo pressionamento dessa hotkey.
    return

### Como a ajuda contexto-sensitiva para o AutoHotkey pode ser usada em qualquer editor?

O Rajat criou este script.

### Como detectar quando uma página da web termina de carregar?

Com o Internet Explorer, talvez o método mais confiável seja usar o DllCall() e COM, como demonstrado em www.autohotkey.com/forum/topic19256.html. Em uma nota relacionada, os conteúdos da barra de endereço e a barra de status podem ser recuperadas como o demonstrado em www.autohotkey.com/forum/topic19255.html.

Método antigo e menos confiável: A técnica no seguinte exemplo funcionará com o Internet Explorer para a maioria das páginas. Uma técnica similar que pode funcionar em outros navegadores:

    Run, www.yahoo.com
    MouseMove, 0, 0  ;Evita que a barra de status mostre um mouse hover link ao invés de "Done" .
    WinWait, Yahoo! -
    WinActivate
    StatusBarWait, Done, 30
    if ErrorLevel
        MsgBox O tempo atingiu o limite ou a janela foi fechada.
    else
        MsgBox A página está carregando.

### Como datas e momentos podem ser comparados ou manipulados?

O comando EnvAdd pode adicionar ou subtrair uma quantidade de dias, horas, minutos ou segundos de uma time-string que está no formato YYYYMMDDHH24MISS. O seguinte exemplo subtrai 7 dias do tempo especificado: `EnvAdd, VarContainingTimestamp, -7, days`.

Para determinar a quantidade de tempo entre duas datas ou momentos, veja a página EnvSub, que fornece um exemplo. Além disso, a variável embutida A_Now contém o tempo atual local. Por fim, há muitas variáveis de data/horas embutidas, como também o comando FormatTime para criar uma string temporal personalizada.

### Como faço para enviar a data e/ou hora atual?

Use FormatTime ou variáveis embutidas para datas e horas.

### Como faço para enviar texto em uma janela que não está ativa ou não está visível?

Use o comando ControlSend.

### Como o Winamp pode ser controlado mesmo quando não está ativo?

Veja a página Automatizando o Winamp.

### Como os nomes dos botões da Caixa de Diálogo podem ser alterados?

Aqui está um exemplo.

### Como faço para alterar o editor padrão, aquele que é acessado através do menu de contexto ou o ícone de bandeja?

Na seção exemplo de Edit você encontrará um script que permite que você altere o editor padrão.

### Como faço para salvar os conteúdos do meu GUI de variáveis associadas?

Use o comando Gui Submit. Por exemplo:

    Gui, Add, Text,, Coloque algum texto e pressione Submit:
    Gui, Add, Edit, vAssociatedVar
    Gui, Add, Button,, Submit
    Gui, Show
    Return

    ButtonSubmit:
    Gui, Submit, NoHide
    MsgBox, Conteúdo do controle de edição: %AssociatedVar%
    Return

### Posso desenhar alguam coisa com o AHK?

Veja a GDI+ standard library oferecida por tic. Isso também é possível com alguns métodos rudimentares usando GUI, mas de uma forma limitada.

### Como faço para iniciar uma ação quando uma janela aparece, fecha ou torna-se [in]ativa?

Use WinWait, WinWaitClose ou WinWait[Not]Active.

Também há soluções de usuário criado como OnWin.ahk e [Como fazer] Hook através do Shell para receber suas mensagens.

## Hotkeys, Hostrings e Remapeamento

### Como faço para colocar minhas hotkeys e hotstrings em efeito automaticamente sempre que eu iniciar meu computador?

Há diversas maneiras de fazer um script (ou qualquer programa) iniciar automaticamente sempre que você iniciar seu computador. A maneira mais fácil é colocar um atalho para o script na pasta Startup:

1. Encontre o arquivo script, selecione-o e pressione `Control`+`C`.
2. Pressione `Win`+`R` para abrir o Executar. Digite `shell:startup` e clique em OK ou pressione `Enter`. Isso abrirá a pasta Startup para o usuário atual. Para abrir a pasta para todos os usuários, digite `shell:common startup` (embora que, nesse caso, você precisa ser um administrador para prosseguir).
3. Clique com o botão direito sobre a janela e clique em "Paste Shortcut". Agora o atalho para o script deve estar na pasta Startup.

### Estou tendo problemas para fazer meus botões do mouse funcionarem como hotkeys. Algum conselho??

Os botões esquerdo e direito do mouse devem ser atribuídos normalmente (por exemplo, `#LButton::` é a hotkey para `Win`+LeftButton). De uma forma parecida, o botão do meio e o giro da roda do mouse devem ser atribuídas normalmente, exceto em mouses cujo os drivers controlam diretamente esses botões.

O quarto botão (XButton1) e o quinto botão (XButton2) pode ser atribuído se o driver do seu mouse permitir que seus cliques sejam vistos pelo sistema. Se eles não puderem ser visto -- ou se seu mouse possui mais do que cinco botões que você queira usar -- você pode tentar configurar o software que vem com o mouse (às vezes acessível através do Painel de Controle ou o Menu Iniciar) para enviar um pressionamento de tecla sempre que você pressionar um desses botões. Parecendo-se com um pressionamento de tecla ele pode então ser definido como uma hotkey em um script. Por exemplo, se você configurar o quarto botão para enviar `Control`+`F1`, você pode configurar indiretamente esse botão como uma hotkey usando `^F1::` em um script.

Se você possui um mouse com cinco botões cujo o quarto e quinto botão não podem ser vistos, você pode tentar alterar o driver do seu mouse para o driver padrão incluído com o Sistema Operacional. Isso assumindo que existe um driver em particular para seu mouse e que você pode viver sem as funções fornecidas pelo seu software personalizado de mouse.

### Como as teclas Tab e Space podem ser definidas como hotkeys?

Use os nomes das teclas (Tab e Space) ao invés de seus caracteres. Por exemplo, `#Space` é `Win`+`Space` e `^!Tab` é `Control`+`Alt`+`Tab`.

### Como as teclas ou botões do mouse podem ser remapeadas para que elas tornem-se teclas diferentes?

Isso é descrito na página remapeamento.

### Como faço para detectar o pressionamento duplo de uma tecla ou botão?

Use variáveis embutidas para hotkeys como o seguinte:

    ~Ctrl::
        if (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 200)
            MsgBox double-press
    return

### Como uma hotkey ou hotstring pode ser exclusiva para certo(s) programa(s)? Em outras palavras, quero que uma certa tecla faça o que normalmente faz, exceto quando uma janela específica estiver ativa.

O melhor método para isso é o #IfWinActive. Por exemplo:

    #IfWinActive, ahk_class Notepad
    ^a::MsgBox You pressed Control-A while Notepad is active.

### Como uma tecla prefixo de combinação pode ser feita para realizar sua função nativa ao invés de não fazer nada?

Considere o seguinte exemplo, que torna a tecla Numpad0 em uma tecla prefixo:

    Numpad0 & Numpad1::MsgBox, Você pressionou Numpad1 enquanto mantinha pressionada a tecla Numpad0.

Agora, para fazer que Numpad0 envie um pressionamento de tecla real da tecla Numpad0 sempre que ela não for usada para iniciar uma hotkey como o mostrado acima, adicione a seguinte hotkey:

     $Numpad0::Send, {Numpad0}

O prefixo $ é necessário para evitar um diálogo de aviso sobre um loop infinito (visto que a hotkey "envia ela mesma"). Além disso, a ação acima ocorre ao mesmo tempo em que a tecla é solta.

### Como as teclas de atalho embutidas do Windows, como Win+U (Gerenciador de Utilidade) e Win+R (Executar) podem ser alteradas ou desabilitadas?

Aqui estão alguns exemplos.

### Posso usar wildcards ou expressões regulares em Hotstrings?

Use o script criado por polyethene (os exemplos estão inclusos).

### Como faço para usar uma hotkey que não está no meu layout de teclado?

Veja a página Special Keys.

### Meu teclado numérico possui uma tecla especial 000. É possível torná-la uma hotkey?

Sim. Esse é um script de exemplo que faz que a tecla `000` seja uma tecla de igual. Você pode alterar a ação substituindo a linha `Send, =` com a(s) linha(s) de sua escolha.