Inizi ogni giornata con le migliori intenzioni, ringiovanito, pronto ad affrontare tutti i tuoi compiti. Quindi, controlli l'ora, sono le 03:00 e non puoi fare a meno di chiederti, dov'è finito tutto il tempo?
Potresti usare un'app di monitoraggio del tempo dedicata, ma quelle possono essere fastidiosamente complesse. Inoltre, dov'è il divertimento in questo?
Perché invece non creare la tua semplice mini-app, che potrebbe tenere traccia di tutte le finestre su cui hai trascorso del tempo durante il giorno? Avrai solo bisogno di AutoHotKey, un elaboratore di testi di base come Blocco note e circa mezz'ora. Restiamo bloccati.
Che cos'è AutoHotKey?
Lo scopo principale di AutoHotKey è l'automazione del desktop. È un linguaggio di scripting con il quale è possibile inviare sequenze di tasti e movimenti del mouse a qualsiasi finestra attiva, creare tasti di scelta rapida o modificare i tasti premuti. Puoi, ad esempio, usarlo per disabilitare tasti specifici sulla tastiera.
Tuttavia, questa è la versione breve della storia e non è veramente rappresentativa di ciò che AutoHotKey (AHK in breve) può fare. Questo perché si è evoluto dalla sua concezione iniziale e ora è un linguaggio di scripting completo. Puoi pensare a cosa puoi fare con esso come "programmazione Lite".
Pertanto, puoi anche utilizzare AHK per creare mini-app, proprio come quello che ci siamo posti come obiettivo per questo articolo. Nota che in questo articolo ci immergeremo direttamente in AHK, quindi potresti voler controllare la nostra guida rapida all'AutoHotKey per principianti prima di iniziare.
Creazione del proprio script di registrazione della finestra con AutoHotKey
Prima di iniziare, dovresti avere AHK installato sul tuo computer poiché fungerà da "parser" per il tuo script. È "il motore" che consentirà al tuo script di "correre".
Nota: puoi anche compilare il tuo script dopo averlo fatto per trasformarlo in un vero programma eseguibile. Tuttavia, questo esula dallo scopo di questo articolo.
Scarica AutoHotKey dal suo sito ufficiale e installarlo.
Avvia il tuo file manager preferito e visita una cartella in cui desideri archiviare lo script. Quindi, fai clic con il pulsante destro del mouse su un punto vuoto e scegli Nuovo > Script AutoHotKey.
Fatto ciò, è il momento di scrivere lo script vero e proprio.
1. Definire le variabili necessarie
Apri lo script nel tuo editor preferito. Puoi usare qualcosa di semplice come Blocco note fornito con Windows, ma useremo Blocco note++ per questa guida. Poiché Notepad++ è gratuito e più adatto allo scopo, vale la pena provarlo. Assicurati di controllare anche la nostra guida definitiva su tutte le sue scorciatoie da tastiera mentre lo controlli.
Tieni presente che non dovresti utilizzare app come Word o Google Docs, che potrebbero influire sulla sua formattazione. Utilizza un editor di testo o di "codice".
Lo script conterrà già alcune nozioni di base consigliate per compatibilità e prestazioni. Lasciali così come sono e inizia il tuo script sotto di loro.
Iniziare con:
AppLoggingRate = 10; Intervallo di tempo (in secondi) tra le acquisizioni del titolo della finestra attiva.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Iniziamo assegnando il valore "10" ad AppLoggingRate, che utilizzeremo per calcolare il tempo tra l'acquisizione dei titoli delle finestre.
Se utilizzato con la funzione Sleep di AHK, 1000 è approssimativamente uguale a un secondo. Quindi, moltiplicandolo per AppLogingRate, rendiamo la variabile SleepTime "uguale a dieci secondi".
LogPath è il percorso in cui vogliamo memorizzare i nostri log. Stiamo usando il valore %A_ScriptDir%, che si traduce in "la cartella da cui esegui lo script". Se lo desideri, puoi utilizzare il percorso completo di un'altra cartella.
Infine, impostiamo LastActiveWindow su vuoto. Lo useremo in seguito per verificare se la finestra attiva è cambiata.
2. Monitora le finestre attive
Poiché vogliamo tenere continuamente traccia di quale finestra è attiva e, se cambia, registrarne il titolo e l'ora, dovremo utilizzare "un loop".
Come dice il nome, un ciclo viene eseguito continuamente, ripetendo la stessa funzione (s). Grazie alla sintassi semplice di AHK, riteniamo che il seguente "codice" sia relativamente autoesplicativo:
Ciclo continuo
{
Dormire %SleepTime%
Msgbox, funziona!
}
Definiamo un ciclo semplicemente digitando la parola "loop" e contrassegnandone l'inizio con "{" e la fine con "}". Tutto nelle righe tra "{" e "}" verrà eseguito perennemente fino a quando non esci dallo script.
Iniziamo il ciclo attendendo (Sleep) per un tempo pari alla variabile SleepTime. L'abbiamo impostata come variabile nel capitolo precedente per rendere più semplice il controllo del tempo. Invece di modificare lo script stesso, puoi "dirgli", attraverso questa variabile, quanti secondi dovrebbe durare ogni ciclo.
Infine, usiamo una Message Box per testare il nostro script. Prova a salvarlo ed eseguirlo (fai doppio clic sul suo file). Vedrai una finestra di messaggio che dice "Funziona!" dopo dieci secondi.
Fai clic con il pulsante destro del mouse sull'icona di AHK nella barra delle applicazioni di Windows ed esci dallo script quando hai abbastanza finestre di messaggio. Quindi, torna al tuo editor e sostituisci la riga MsgBox con:
WinGetActiveTitle, ActiveWindow
Questo è il comando per ottenere il titolo della finestra attiva. Ignora la riga extra "StoreActiveWindow", che abbiamo usato durante la scrittura dello script per il test.
3. Ottieni l'ora e il nome attuali
Ora arriva la parte centrale della logica dello script. Vogliamo che confronti il nome della finestra attiva con quello precedente e, se sono diversi, "fai qualcosa". È semplice come segue:
Se ActiveWindow != %LastActiveWindow%
{
}
Con quanto sopra, controlliamo se l'ActiveWindow attualmente è diverso (!=) dal valore memorizzato nella variabile LastActiveWindow (che inizialmente abbiamo impostato su vuoto). Se lo è, AHK eseguirà il codice tra { e }, che per ora sono vuoti.
Dobbiamo tenere traccia sia della data che dell'ora per misurare da quanto tempo una finestra è attiva. Terremo registri diversi per ogni giorno, utilizzando la data nel loro nome. E vogliamo registrare non solo ogni cambio di finestra ma anche quando è successo. Per questo, assegneremo diversi formati di ora alle variabili LogTime e LogFilename, con:
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-MMM-gg
Aggiungi quelle linee tra le parentesi graffe sotto "If ActiveWindow...", per fare in modo che AHK le esegua quando rileva un cambiamento di finestra.
4. Formattazione dei dati
Abbiamo preso il tempo in due variabili formattate in modo diverso, così come il titolo della finestra attiva. Tuttavia, c'è un piccolo problema: il titolo di una finestra potrebbe contenere anche caratteri che non vogliamo. Possiamo rimuovere tutti i caratteri non alfanumerici utilizzando il supporto di AHK per RegEx, con:
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
Con questo, "diciamo" ad AHK di rimuovere tutti i caratteri dalla variabile ActiveWindow che non corrispondono a ciò che è tra parentesi:
- Lettere minuscole
- Lettere maiuscole
- Numeri
Quindi, assegniamo il risultato alla variabile LogWindow.
Con tutte le variabili impostate e tutti i dati importanti acquisiti, siamo pronti per formattare il nostro file di registro e il suo contenuto.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
In precedenza abbiamo assegnato la data corrente alla variabile LogFilename. Quindi, con la prima riga, stiamo semplicemente affermando che vogliamo aggiungere "_AppLog.md" alla data per usarlo come nome file.
Nella seconda riga combiniamo la variabile LogPath, che abbiamo definito all'inizio come destinazione dei nostri log, con il nome del file. La loro combinazione è il percorso completo del log, assegnato alla variabile LogFile.
Assegniamo l'equivalente di "riga vuota, Ora - Nome della finestra, altre due righe vuote, un divisore e un'altra riga vuota, per buona misura" alla variabile FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Le "`n" dicono ad AHK di inserire una nuova riga (l'equivalente di premere Invio una volta).
- I tre trattini appariranno come divisori quando presentati in un visualizzatore compatibile con markdown.
- "%LogTime%" e "%LogWindow%" sono le variabili in cui abbiamo memorizzato il nome della finestra attiva e l'ora in cui è stata rilevata.
5. Aggiorna il file
Abbiamo definito cosa vogliamo scrivere nel nostro file e ne conosciamo il percorso e il nome. Tutto ciò che rimane è la scrittura vera e propria, che è facile come:
FileAppend, %FileContent%, %LogFile%
È quasi semplice come l'inglese semplice: aggiungiamo tutto nella variabile "FileContent" al file "LogFile".
La funzione "append" aggiungerà il "FileContent" al file se esiste, ma lo creerà anche da zero in caso contrario.
Ma aspetta, c'è un'ultima modifica: sostituire il contenuto della variabile LastActiveWindow con la finestra attualmente attiva.
Con questo, lo script sarà in grado di rilevare il prossimo cambio finestra.
LastActiveWindow = %ActiveWindow%
E con quest'ultima aggiunta, il tuo registratore di finestre è pronto! Salvalo ed eseguilo. Quindi, controlla il file markdown, che apparirà nella cartella del tuo file di script dopo dieci secondi.
Padroneggia il tuo tempo
Puoi aprire il tuo file di registro con qualsiasi editor di testo. Tuttavia, sembrerà più carino se lo apri in un editor compatibile con markdown. Nello screenshot, puoi vedere il nostro registro nel popolare editor Typora.
È un modo semplice per verificare su quali app hai trascorso più tempo e hai solo bisogno di qualcosa come Blocco note per usarlo.
Se desideri qualcosa di "più", puoi sempre "modellare" l'output del tuo logger per produrre invece file CSV. È facile come modificare la variabile FileContent e l'estensione del file creato. Puoi quindi importare tali file in app come Excel, Google Calc o persino tracker temporali di terze parti.
Script completo:
#NoEnv; Consigliato per prestazioni e compatibilità con le future versioni di AutoHotkey.
; #Avvisare; Abilita gli avvisi per facilitare il rilevamento di errori comuni.
Ingresso modalità di invio; Consigliato per nuovi script grazie alla sua velocità e affidabilità superiori.
SetWorkingDir %A_ScriptDir%; Garantisce una directory di partenza coerente.
; Variabili
;
AppLoggingRate = 10; Intervallo di tempo (in secondi) tra le acquisizioni del titolo della finestra attiva.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logica
;
Ciclo continuo
{
Dormire %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Se ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-MM-gg
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
dormire 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Uscita
AutoHotkey ti consente di creare scorciatoie di Windows personalizzate, macro e altro! Ecco alcuni utili script AutoHotkey per iniziare.
Leggi Avanti
- finestre
- Produttività
- finestre
- Tasto di scelta rapida automatico
- Gestione del tempo
- Trucchi per la produttività
La vera vita di OK è iniziata intorno alle 10, quando ha ricevuto il suo primo computer, un Commodore 128. Da allora, ha sciolto i tasti digitando 24 ore su 24, 7 giorni su 7, cercando di diffondere The Word Of Tech a chiunque fosse abbastanza interessato da ascoltare. O meglio, leggi.
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!
Clicca qui per iscriverti