S prácou začínate každý deň skôr, aby ste všetko stihli vyriešiť počas dňa. Potom skontrolujete hodiny a sú 3 hodiny ráno, ale vaša práca stále nie je dokončená. Kam sa teda podel čas?
Môžete použiť vyhradenú aplikáciu na sledovanie času, ale to môže byť komplikované a frustrujúce. Prečo si namiesto toho nevytvoriť vlastnú jednoduchú malú aplikáciu? Táto aplikácia dokáže sledovať všetky okná, ktoré ste počas dňa použili. Potrebujete iba AutoHotKey, základný textový procesor, ako je Poznámkový blok, a približne pol hodinu. Začnime!
Vytvorte si vlastný skript protokolovania systému Windows pomocou funkcie AutoHotKey
Pred spustením by ste si mali do počítača nainštalovať AHK, pretože bude fungovať ako „analyzátor“ skriptu. Je to nástroj, ktorý umožní vášmu skriptu „bežať“.
Poznámka : Skript môžete po dokončení skompilovať a premeniť ho na skutočný spustiteľný program. To je však nad rámec tohto článku.
Stiahnite si AutoHotKey z oficiálnych stránok a nainštalujte ho.

Vyberte položku Nové > AutoHotKey Script
Spustite svojho obľúbeného správcu súborov a prejdite do priečinka, do ktorého chcete skript uložiť. Potom kliknite pravým tlačidlom myši na prázdne miesto a vyberte Nové > AutoHotKey Script .
Po dokončení je čas napísať skutočný scenár.
1. Identifikujte potrebné premenné
Otvorte skript vo svojom obľúbenom editore. Môžete použiť niečo jednoduché, ako je Poznámkový blok, ktorý sa dodáva so systémom Windows, ale v tomto článku sa použije program Poznámkový blok ++ . Notepad++ je zadarmo a na tento účel je lepšie prispôsobený, takže by ste ho mali vyskúšať.
Upozorňujeme, že by ste nemali používať žiadne aplikácie, ako napríklad Word alebo Dokumenty Google, ktoré môžu ovplyvniť formátovanie skriptu. Použite textový editor alebo editor kódu.
Skript bude obsahovať niekoľko základných odporúčaných informácií o kompatibilite a výkone. Nechajte ich tak, ako sú, a spustite skript nižšie.
Začína s:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Začnite priradením hodnoty „10“ AppLoggingRate , ktorá sa použije na výpočet času medzi pokusmi o protokolovanie okna.
Pri použití s funkciou spánku AHK sa 1000 rovná približne jednej sekunde. Takže vynásobením AppLogingRate získate premennú SleepTime „rovnajúcu sa 10 sekundám“.
LogPath je cesta používaná na ukladanie protokolov. Príklad používa hodnotu %A_ScriptDir% , čo znamená „adresár, z ktorého spúšťate skript“. Ak chcete, môžete použiť úplnú cestu k inému priečinku.
Nakoniec nastavte LastActiveWindow na prázdne a použite neskôr na kontrolu, či sa aktívne okno zmenilo.
2. Monitorujte aktívne okná
Keďže chceme priebežne sledovať, ktoré okno je aktívne a ak sa zmení, zaznamenať názov a čas, budeme musieť použiť „slučku“.
Ako už názov napovedá, slučka beží nepretržite a opakuje rovnakú funkciu (funkcie). Vďaka jednoduchej syntaxi AHK je nasledujúci „kód“ relatívne ľahko pochopiteľný:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Definujte slučku jednoduchým napísaním slova "loop" a následným označením jej začiatku znakom "{" a končiacim znakom "}". Všetko v riadkoch medzi "{" a "}" bude bežať navždy, kým neukončíte skript.
Spustite cyklus čakaním ( Sleep ) po dobu rovnajúcu sa premennej SleepTime. Táto premenná uľahčuje riadenie času. Namiesto toho, aby ste skript sami upravovali, môžete mu prostredníctvom tejto premennej „povedať“, koľko sekúnd má každá slučka trvať.
Nakoniec použite Message Box na testovanie skriptu. Skúste ho uložiť a spustiť (dvakrát kliknite na súbor skriptu). Zobrazí sa okno so správou „Funguje to!“ (skript funguje) po 10 sekundách.
Kliknite pravým tlačidlom myši na ikonu AHK na paneli Windows a ukončite skript, keď budete mať dostatok okien so správami. Potom sa vráťte do editora a nahraďte riadok MsgBox :
WinGetActiveTitle, ActiveWindow
Toto je príkaz na získanie názvu aktívneho okna. Vynechajte ďalší riadok „StoreActiveWindow“ , ktorý príklad použil pri skriptovaní na testovanie.

Získajte názov aktívneho okna a uložte ho do premennej
3. Získajte aktuálny čas a meno
Teraz prichádza jadro logiky skriptu. Porovnajte názov aktívneho okna s predchádzajúcim a ak sa líšia, „urobte niečo“. Všetko je také jednoduché:
If ActiveWindow != %LastActiveWindow%
{
}
Vzhľadom na vyššie uvedené skontrolujte, či sa aktuálne okno ActiveWindow líši ( != ) od hodnoty uloženej v premennej LastActiveWindow (ktorá bola pôvodne nastavená ako prázdna). Ak áno, AHK spustí kód medzi { a } , ktorý je momentálne prázdny.
Nastavte funkciu na porovnanie názvu aktívneho okna a predchádzajúceho okna
Na meranie doby prevádzky okna je potrebné sledovať dátum aj čas. Rôzne denníky pre každý deň s použitím dátumu v ich názve budú zachované. Zaznamená sa nielen každá zmena, ale aj čas, kedy k nej dôjde. Ak to chcete urobiť, priraďte premenným LogTime a LogFilename rôzne časové formáty s:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
Pridajte tieto riadky medzi zložené zátvorky v "If ActiveWindow..." , aby ich AHK spustilo, keď zistí zmenu okna.

Získajte aktuálny čas a priraďte ho do dvoch premenných rôznych formátov
4. Formát údajov
Teraz zachytávame čas v dvoch rozdielne formátovaných premenných, ako aj názov aktívneho okna. Je tu však malý problém: Názov okna môže obsahovať aj nežiaduce znaky. Pomocou podpory RegEx od AHK je možné odstrániť všetky nealfanumerické znaky pomocou:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
S týmto vedomím „požiadajme“ AHK o odstránenie všetkých znakov z premennej ActiveWindow, ktoré sa nezhodujú s tým, čo je v zátvorkách:
- Malými písmenami
- Veľké písmeno
- čísla
Potom priraďte výsledok k premennej LogWindow.

Vyčistite názov aktívneho okna pomocou RegEx
So všetkými nastavenými premennými a zhromaždenými cennými údajmi ste teraz pripravení naformátovať súbor denníka a jeho obsah.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Predtým sme aktuálny dátum priradili premennej LogFilename. Preto v prvom riadku pridajte k dátumu „_AppLog.md“ , aby ste ho použili ako názov súboru.

Nastavte názov súboru denníka
V druhom riadku skombinujte premennú LogPath , ktorá bola na začiatku definovaná ako cieľ pre súbor denníka spolu s názvom súboru. Ich kombináciou je úplná cesta k súboru denníka priradená k premennej LogFile.
Premennej FileContent priraďme ekvivalentnú hodnotu „prázdny riadok, čas – názov okna, ďalšie dva prázdne riadky, oddeľovač a ďalší prázdny riadok“ .
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Písmeno "n" hovorí AHK, aby vložilo nový riadok (ekvivalent jednorazového stlačenia klávesu Enter ).
- Pri zobrazení v kompatibilnom prehliadači sa zobrazia tri pomlčky ako oddeľovač.
- "% LogTime%" a "% LogWindow%" sú premenné, v ktorých je uložený názov aktívneho okna a čas jeho zistenia.

Určuje obsah súboru denníka
5. Aktualizujte súbory
Definovali ste, čo chceme do súboru zapísať, ako aj jeho cestu a názov súboru. Zostáva len skutočný, jednoduchý text takto:
FileAppend, %FileContent%, %LogFile%
Pridajte všetko v premennej "FileContent" do súboru "LogFile".

Na aktualizáciu súboru denníka alebo vytvorenie nového súboru použite funkciu Append od AHK
Funkcia „append“ pridá „FileContent“ k súboru, ak existuje, ale tiež ho vytvorí od začiatku, ak súbor neexistuje.
Je tu jedno posledné vylepšenie: nahraďte obsah premennej LastActiveWindow aktuálne aktívnym oknom.

Vloží názov aktuálneho aktívneho okna do premennej LastActiveWindow pre budúce testovanie
Na to by mal byť skript schopný zistiť ďalšiu zmenu okna.
LastActiveWindow = %ActiveWindow%
A s týmto posledným prírastkom je záznamník systému Windows pripravený! Uložte skript a spustite ho. Potom skontrolujte súbor markdown, tento súbor sa po 10 sekundách objaví v priečinku súboru skriptu.

Súbor denníka systému Windows sa vytvorí v rovnakom adresári ako skript
Postarajte sa o svoj čas
Súbor denníka môžete otvoriť pomocou ľubovoľného textového editora. Lepšie však bude vyzerať, ak ho otvoríte v editore kompatibilnom s markdown. Na snímke obrazovky môžete vidieť denník v populárnom editore Typora.

Súbor markdown vygenerovaný skriptom sa načíta v Typore
Je to jednoduchý spôsob, ako skontrolovať, ktoré aplikácie používate najviac času, a na použitie potrebujete iba nástroj, ako je Poznámkový blok.
Ak chcete niečo „špeciálnejšie“, vždy môžete „naštýlovať“ výstup loggera tak, aby namiesto toho vytvoril súbor CSV. Je to také jednoduché, ako upraviť premennú FileContent a príponu vytvoreného súboru. Takéto súbory potom môžete importovať do aplikácií, ako sú Excel, Google Calc alebo dokonca nástroje na sledovanie času tretích strán.
Kompletný skript
#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