Você começa seu trabalho todos os dias cedo para poder resolver tudo durante o dia. Então você verifica o relógio e são 3 da manhã, mas seu trabalho ainda não terminou. Então, para onde foi o tempo?
Você pode usar um aplicativo dedicado de controle de tempo, mas isso pode ser complicado e frustrante. Em vez disso, por que não criar seu próprio aplicativo simples? Este aplicativo pode rastrear todas as janelas que você usou durante o dia. Você só precisa do AutoHotKey, um processador de texto básico como o Notepad, e cerca de meia hora. Vamos começar!
Crie seu próprio script de registro do Windows com AutoHotKey
Antes de começar, você deve instalar o AHK em seu computador, pois ele atuará como um “analisador” do script. É a ferramenta que permitirá que seu script “corra”.
Nota : Você também pode compilar o script após a conclusão para transformá-lo em um programa executável real. No entanto, isso está além do escopo deste artigo.
Baixe o AutoHotKey do site oficial e instale-o.

Selecione Novo> Script AutoHotKey
Abra seu gerenciador de arquivos favorito e acesse a pasta onde deseja armazenar o script. Em seguida, clique com o botão direito em um local vazio e selecione Novo > AutoHotKey Script .
Depois de concluído, é hora de escrever o script real.
1. Identifique as variáveis necessárias
Abra o script em seu editor favorito. Você pode usar algo simples como o Notepad que vem com o Windows, mas o artigo usará o Notepad++ para este tutorial. O Notepad++ é gratuito e melhor adaptado para esse fim, então você deve experimentá-lo.
Observe que você não deve usar aplicativos como Word ou Google Docs, pois podem afetar a formatação do script. Use um editor de texto ou código.
O script conterá algumas informações básicas recomendadas sobre compatibilidade e desempenho. Deixe-os como estão e inicie o script abaixo.
Começa com:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Comece atribuindo o valor "10" a AppLoggingRate , que será usado para calcular o tempo entre as tentativas de registro da janela.
Quando usado com a função Sleep do AHK, 1000 é aproximadamente igual a um segundo. Portanto, multiplicando-o por AppLogingRate você tornará a variável SleepTime "igual a 10 segundos".
LogPath é o caminho usado para armazenar logs. O exemplo está usando o valor %A_ScriptDir% , que se traduz em "o diretório de onde você executa o script". Você pode usar o caminho completo para outra pasta, se desejar.
Por fim, defina LastActiveWindow como vazio e use mais tarde para verificar se a janela ativa foi alterada.
2. Monitore janelas ativas
Como queremos monitorar continuamente qual janela está ativa e se ela mudar, registrar o título e a hora, teremos que usar um “loop”.
Como o nome sugere, um loop é executado continuamente, repetindo a(s) mesma(s) função(ões). Graças à sintaxe simples do AHK, o seguinte “código” é relativamente fácil de entender:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Defina um loop simplesmente digitando a palavra "loop" e marcando seu início com "{" e finalizando com "}". Tudo nas linhas entre "{" e "}" será executado indefinidamente até você sair do script.
Inicie o loop aguardando ( Sleep ) por um período de tempo igual à variável SleepTime. Esta variável simplifica o controle do tempo. Em vez de editar o script você mesmo, você pode "dizer", através desta variável, quantos segundos cada loop deve durar.
Por fim, use a caixa de mensagens para testar o script. Tente salvá-lo e executá-lo (clique duas vezes no arquivo de script). Você verá uma caixa de mensagem que diz “Funciona!” (script funcionando) após 10 segundos.
Clique com o botão direito no ícone do AHK na bandeja do Windows e saia do script quando tiver caixas de mensagens suficientes. Em seguida, volte ao editor e substitua a linha MsgBox por:
WinGetActiveTitle, ActiveWindow
Este é o comando para obter o título da janela ativa. Omita a linha extra "StoreActiveWindow" que o exemplo usou durante o script para teste.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Obtenha o título da janela ativa e armazene-o em uma variável
3. Obtenha a hora e o nome atuais
Agora vem o núcleo da lógica do script. Compare o nome da janela ativa com a anterior e, se forem diferentes, "faça alguma coisa". Tudo é tão simples assim:
If ActiveWindow != %LastActiveWindow%
{
}
Diante do exposto, verifique se o ActiveWindow atual é diferente ( != ) do valor armazenado na variável LastActiveWindow (que foi inicialmente definida como vazia). Nesse caso, o AHK executará o código entre { e } , que está atualmente vazio.
Defina a função para comparar o título da janela ativa e da janela anterior
É necessário rastrear a data e a hora para medir o tempo de atividade de uma janela. Serão retidos registros diferentes para cada dia, usando a data em seu nome. Não apenas todas as alterações, mas o momento em que elas ocorrem também serão registradas. Para fazer isso, atribua diferentes formatos de hora às variáveis LogTime e LogFilename , com:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
Adicione essas linhas entre as chaves em "If ActiveWindow..." , para que o AHK as execute quando detectar uma alteração na janela.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Obtenha a hora atual e atribua-a em duas variáveis de formatos diferentes
4. Formato de dados
Agora capturamos a hora em duas variáveis formatadas de forma diferente, bem como o título da janela ativa. Porém, há um pequeno problema: o título da janela também pode conter caracteres indesejados. É possível remover todos os caracteres não alfanuméricos usando o suporte do AHK para RegEx, com:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
Com isso em mente, vamos "pedir" ao AHK para remover todos os caracteres da variável ActiveWindow que não correspondem ao que está entre colchetes:
- Minúsculas
- Letra maiúscula
- Números
Em seguida, atribua o resultado à variável LogWindow.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Limpe o título da janela ativa com RegEx
Com todas as variáveis definidas e todos os dados valiosos coletados, você está pronto para formatar o arquivo de log e seu conteúdo.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Anteriormente, atribuímos a data atual à variável LogFilename. Portanto, para a primeira linha, adicione "_AppLog.md" à data para usá-la como nome do arquivo.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Defina o nome do arquivo de log
Na segunda linha, combine a variável LogPath , definida no início como destino do arquivo de log junto com o nome do arquivo. A combinação deles é o caminho completo do arquivo de log, atribuído à variável LogFile.
Vamos atribuir o valor equivalente de "linha vazia, Tempo - Nome da janela, mais duas linhas vazias, um divisor e outra linha vazia, para garantir" à variável FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- A letra “n” diz ao AHK para inserir uma nova linha (equivalente a pressionar Enter uma vez).
- Três traços aparecerão como separadores quando exibidos em um visualizador compatível com cruz para baixo.
- "% LogTime%" e "% LogWindow%" são variáveis que armazenam o nome da janela ativa e o horário em que ela foi detectada.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Determina o conteúdo do arquivo de log
5. Atualizar arquivos
Você definiu o que queremos escrever no arquivo, bem como seu caminho e nome de arquivo. Tudo o que resta é o texto simples e real como segue:
FileAppend, %FileContent%, %LogFile%
Anexe tudo na variável “FileContent” ao arquivo “LogFile”.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Use a função Append do AHK para atualizar o arquivo de log ou criar um do zero
A função "append" adicionará "FileContent" ao arquivo, se ele existir, mas também o criará do zero se o arquivo não existir.
Há um ajuste final: substitua o conteúdo da variável LastActiveWindow pela janela atualmente ativa.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
Insere o título da janela ativa atual na variável LastActiveWindow para testes futuros
Para fazer isso, o script deve ser capaz de detectar a próxima alteração na janela.
LastActiveWindow = %ActiveWindow%
E com essa última adição, o windows logger está pronto! Salve o script e execute-o. Em seguida, verifique o arquivo markdown, este arquivo aparecerá na pasta do arquivo de script após 10 segundos.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
O arquivo de log do Windows é criado no mesmo diretório do script
Assuma o controle do seu próprio tempo
Você pode abrir o arquivo de log com qualquer editor de texto. No entanto, ficará melhor se você abri-lo em um editor compatível com markdown. Na captura de tela você pode ver o log no popular editor Typora.
![Como criar um aplicativo de controle de tempo no Windows com AutoHotKey Como criar um aplicativo de controle de tempo no Windows com AutoHotKey]()
O arquivo markdown gerado pelo script é carregado no Typora
É uma maneira fácil de verificar quais aplicativos você usa há mais tempo e requer apenas uma ferramenta como o Bloco de Notas para usar.
Se você quiser algo "mais especial", você sempre pode "estilar" a saída do logger para criar um arquivo CSV. É tão fácil quanto ajustar a variável FileContent e a extensão do arquivo criado. Você pode então importar esses arquivos para aplicativos como Excel, Google Calc ou até mesmo rastreadores de tempo de terceiros.
Roteiro completo
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; Variables
; ---------
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logic
; -----
Loop
{
Sleep %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
If ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename, , yyyy-MM-dd
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
sleep 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Exit