Você começa cada dia com as melhores intenções, rejuvenescido, pronto para enfrentar todas as suas tarefas. Então, você verifica a hora, são 03h00, e você não pode deixar de se perguntar, para onde foi todo o tempo?

Você pode usar um aplicativo de controle de tempo dedicado, mas esses podem ser irritantemente complexos. Além disso, onde está a diversão nisso?

Por que não fazer seu próprio mini-aplicativo simples, que pode rastrear todas as janelas que você gastou durante o dia? Você só precisará do AutoHotKey, um processador de texto básico como o Bloco de Notas, e cerca de meia hora. Vamos ficar presos.

O que é AutoHotKey?

O objetivo principal do AutoHotKey é a automação de desktop. É uma linguagem de script com a qual você pode enviar pressionamentos de tecla e movimentos do mouse para qualquer janela ativa, criar teclas de atalho ou modificar pressionamentos de tecla. Você pode, por exemplo, usá-lo para desabilite teclas específicas em seu teclado.

No entanto, essa é a versão resumida da história e não é verdadeiramente representativa do que AutoHotKey (AHK para abreviar) pode fazer. Isso porque ela evoluiu desde sua concepção inicial e agora é uma linguagem de script completa. Você pode pensar no que pode fazer com ele como "programação Lite".

instagram viewer

Assim, você também pode usar o AHK para criar mini-aplicativos, exatamente como o que definimos como nosso objetivo para este artigo. Observe que neste artigo iremos mergulhar direto no AHK, então, você pode querer verificar nosso guia rápido AutoHotKey para iniciantes antes de começar.

Criando seu próprio script de registro de janela com AutoHotKey

Antes de começar, você deve ter o AHK instalado em seu computador, pois ele atuará como o "analisador" do seu script. É "o mecanismo" que permitirá que seu script "seja executado".

Nota: Você também pode compilar seu script depois de concluído para transformá-lo em um programa executável real. No entanto, isso está fora do escopo deste artigo.

Baixar AutoHotKey de seu site oficial e instale-o.

Abra seu gerenciador de arquivos favorito e visite uma pasta onde deseja armazenar seu script. Em seguida, clique com o botão direito em um local vazio e escolha Novo> AutoHotKey Script.

Feito isso, é hora de escrever o script real.

1. Defina as variáveis ​​necessárias

Abra o script em seu editor favorito. Você pode usar algo tão simples como o Bloco de notas que vem com o Windows, mas usaremos Notepad ++ para este guia. Como o Notepad ++ é gratuito e melhor adaptado para esse propósito, vale a pena experimentá-lo. Certifique-se de verificar também nosso melhor guia em todos os seus atalhos de teclado enquanto você está verificando.

Observe que você não deve usar nenhum aplicativo como Word ou Google Docs, o que pode afetar sua formatação. Use um editor de texto ou de "código".

O script já conterá alguns princípios básicos recomendados para compatibilidade e desempenho. Deixe-os como estão e comece seu script abaixo deles.

Começar com:

AppLoggingRate = 10; Intervalo de tempo (em segundos) entre as capturas do título da janela ativa.
SleepTime: = AppLoggingRate * 1000
LogPath =% A_ScriptDir%
LastActiveWindow =

Começamos atribuindo o valor "10" a AppLoggingRate, que usaremos para calcular o tempo entre a captura de títulos de janela.

Quando usado com a função Sleep de AHK, 1000 é aproximadamente igual a um segundo. Portanto, ao multiplicá-lo por AppLogingRate, estamos tornando a variável SleepTime "igual a dez segundos".

LogPath é o caminho onde queremos armazenar nossos logs. Estamos usando o valor% A_ScriptDir%, que se traduz como "a pasta de onde você executa o script". Você pode usar o caminho completo para outra pasta, se desejar.

Por fim, definimos LastActiveWindow como em branco. Usaremos isso mais tarde para verificar se a janela ativa foi alterada.

2. Monitore as janelas ativas

Visto que queremos manter o controle contínuo de qual janela está ativa e, se ela mudar, registrar seu título e hora, teremos que usar "um loop".

Como o próprio nome indica, um loop é executado continuamente, repetindo a (s) mesma (s) função (ões). Graças à sintaxe direta de AHK, acreditamos que o seguinte "código" é relativamente autoexplicativo:

Ciclo
{
Sleep% SleepTime%
Msgbox, funciona!
}

Definimos um loop simplesmente digitando a palavra "loop" e marcando seu início com "{" e finalizando com "}". Tudo nas linhas entre "{" e "}" será executado perpetuamente até que você saia do script.

Começamos o loop esperando (Sleep) por um período de tempo igual à variável SleepTime. Nós o definimos como uma variável no capítulo anterior para tornar o controle do tempo mais direto. Em vez de editar o próprio script, você pode "dizer" a ele, por meio dessa variável, quantos segundos cada loop deve durar.

Finalmente, usamos uma caixa de mensagem para testar nosso script. Tente salvá-lo e executá-lo (clique duas vezes em seu arquivo). Você verá uma caixa de mensagem dizendo "Funciona!" após dez segundos.

Clique com o botão direito no ícone de AHK na bandeja do Windows e saia do script quando tiver caixas de mensagem suficientes. Em seguida, volte ao seu editor e substitua a linha MsgBox por:

WinGetActiveTitle, ActiveWindow

Este é o comando para obter o título da janela ativa. Ignore a linha extra "StoreActiveWindow", que usamos ao escrever o script para teste.

3. Obtenha a hora e o nome atuais

Agora vem a parte central da lógica do script. Queremos comparar o nome da janela ativa com o anterior e, se forem diferentes, "faça algo". É tão simples quanto o seguinte:

Se ActiveWindow! =% LastActiveWindow%
{
}

Com o acima, verificamos se a ActiveWindow atual é diferente (! =) Do valor armazenado na variável LastActiveWindow (que inicialmente definimos como em branco). Se estiver, AHK executará o código entre {e}, que por enquanto estão vazios.

Precisamos controlar a data e a hora para medir por quanto tempo uma janela está ativa. Manteremos logs diferentes para cada dia, usando a data em seu nome. E queremos registrar não apenas todas as mudanças de janela, mas também quando aconteceu. Para isso, iremos atribuir diferentes formatos de hora às variáveis ​​LogTime e LogFilename, com:

FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-MMM-dd

Adicione essas linhas entre as chaves em "If ActiveWindow ...", para que o AHK as execute ao detectar uma mudança na janela.

4. Formatação de Dados

Capturamos a hora em duas variáveis ​​formatadas de forma diferente, bem como no título da janela ativa. No entanto, há um pequeno problema: o título de uma janela também pode conter caracteres que não queremos. Podemos remover todos os caracteres não alfanuméricos usando o suporte de AHK para RegEx, com:

LogWindow: = Regexreplace (ActiveWindow, "[^ a-zA-Z0-9]", "")

Com isso, "dizemos" ao AHK para remover todos os caracteres da variável ActiveWindow que não correspondam ao que está entre colchetes:

  • Letras minúsculas
  • Letras maiúsculas
  • Números

Em seguida, atribuímos o resultado à variável LogWindow.

Com todas as variáveis ​​definidas e todos os dados valiosos coletados, estamos prontos para formatar nosso arquivo de log e seu conteúdo.

LogFilename =% LogFilename% _AppLog.md
LogFile =% LogPath% \% LogFilename%

Anteriormente, atribuímos a data atual à variável LogFilename. Portanto, com a primeira linha, estamos apenas declarando que queremos adicionar "_AppLog.md" à data para usá-lo como um nome de arquivo.

Na segunda linha, combinamos a variável LogPath, que definimos no início como o destino de nossos logs, com o nome do arquivo. Sua combinação é o nome do caminho completo do log, atribuído à variável LogFile.

Vamos atribuir o equivalente a "linha vazia, Tempo - Nome da janela, mais duas linhas vazias, um divisor e outra linha vazia, para uma boa medida" à variável FileContent.

FileContent = `n% LogTime% -% LogWindow%` n`n- - -`n
  • O "` n "diz ao AHK para inserir uma nova linha (o equivalente a pressionar Enter uma vez).
  • Os três travessões aparecerão como um divisor quando apresentados em um visualizador compatível com markdown.
  • "% LogTime%" e "% LogWindow%" são as variáveis ​​onde armazenamos o nome da janela ativa e a hora em que foi detectada.

5. Atualize o arquivo

Definimos o que queremos gravar em nosso arquivo e sabemos seu caminho e nome de arquivo. Tudo o que resta é a própria escrita, que é tão fácil quanto:

FileAppend,% FileContent%,% LogFile%

É quase tão simples quanto o inglês simples: acrescentamos tudo na variável "FileContent" ao arquivo "LogFile".

A função "append" adicionará o "FileContent" ao arquivo se ele existir, mas também o criará do zero se não existir.

Mas espere, há um último ajuste: substituir o conteúdo da variável LastActiveWindow pela janela ativa no momento.

Com isso, o script será capaz de detectar o próximo mudança de janela.

LastActiveWindow =% ActiveWindow%

E com essa última adição, seu logger de janelas está pronto! Salve-o e execute-o. Em seguida, verifique o arquivo markdown, que aparecerá na pasta do seu arquivo de script após dez segundos.

Domine o seu tempo

Você pode abrir seu arquivo de log com qualquer editor de texto. Ainda assim, ficará mais bonito se você abri-lo em um editor compatível com markdown. Na captura de tela, você pode ver nosso log no popular editor Typora.

É uma maneira fácil de verificar quais aplicativos você gastou mais tempo, e você só precisa de algo como o Bloco de notas para usá-lo.

Se você quiser algo "mais", pode sempre "estilizar" a saída do seu logger para produzir arquivos 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; Recomendado para desempenho e compatibilidade com versões futuras do AutoHotkey.
; #Avisar; Ative os avisos para ajudar na detecção de erros comuns.
SendMode Input; Recomendado para novos scripts devido à sua velocidade e confiabilidade superiores.
SetWorkingDir% A_ScriptDir%; Garante um diretório inicial consistente.
; Variáveis
;
AppLoggingRate = 10; Intervalo de tempo (em segundos) entre as capturas do título da janela ativa.
SleepTime: = AppLoggingRate * 1000
LogPath =% A_ScriptDir%
LastActiveWindow =
; Lógica
;
Ciclo
{
Sleep% SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow =% ActiveWindow%
Se ActiveWindow! =% LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-MM-dd
LogWindow: = Regexreplace (ActiveWindow, "[^ a-zA-Z0-9]", "")
LogFilename =% LogFilename% _AppLog.md
LogFile =% LogPath% \% LogFilename%
FileContent = `n% LogTime% -% LogWindow%` n`n- - -`n
dormir 50
FileAppend,% FileContent%,% LogFile%
LastActiveWindow =% ActiveWindow%
}
}
Saída
10 scripts AutoHotkey legais (e como fazer os seus)

O AutoHotkey permite que você crie atalhos personalizados do Windows, macros e muito mais! Aqui estão alguns scripts AutoHotkey úteis para você começar.

Leia a seguir

CompartilhadoTweetO email
Tópicos relacionados
  • janelas
  • Produtividade
  • janelas
  • AutoHotkey
  • Gerenciamento de tempo
  • Truques de produtividade
Sobre o autor
Odysseas Kourafalos (12 artigos publicados)

A vida real de OK começou por volta dos 10 anos, quando ele ganhou seu primeiro computador - um Commodore 128. Desde então, ele tem derretido teclas digitando 24 horas por dia, 7 dias por semana, tentando espalhar a palavra da tecnologia para qualquer pessoa interessada o suficiente para ouvir. Ou melhor, leia.

Mais de Odysseas Kourafalos

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever