Jūs katru dienu sākat darbu agri, lai visu varētu atrisināt dienas laikā. Pēc tam jūs pārbaudāt pulksteni un ir 3:00, bet jūsu darbs joprojām nav paveikts. Tātad, kur pazudis laiks?
Varat izmantot īpašu laika uzskaites lietotni, taču tās var būt sarežģītas un nomāktas. Tā vietā, kāpēc gan neizveidot savu vienkāršo lietotni? Šī lietojumprogramma var izsekot visiem logiem, kurus esat izmantojis dienas laikā. Jums vienkārši nepieciešams AutoHotKey, pamata tekstapstrāde, piemēram, Notepad, un apmēram pusstunda. Sāksim!
Izveidojiet savu Windows reģistrēšanas skriptu, izmantojot AutoHotKey
Pirms darba sākšanas datorā jāinstalē AHK, jo tas darbosies kā skripta "parsētājs". Tas ir rīks, kas ļaus jūsu skriptam "palaist".
Piezīme . Varat arī kompilēt skriptu pēc pabeigšanas, lai pārvērstu to par īstu izpildāmu programmu. Tomēr tas ir ārpus šī raksta darbības jomas.
Lejupielādējiet AutoHotKey no oficiālās vietnes un instalējiet to.

Atlasiet Jauns > AutoHotKey skripts
Ieslēdziet savu iecienītāko failu pārvaldnieku un piekļūstiet mapei, kurā vēlaties saglabāt skriptu. Pēc tam ar peles labo pogu noklikšķiniet uz tukšas vietas un atlasiet Jauns > AutoHotKey skripts .
Kad tas ir pabeigts, ir pienācis laiks rakstīt faktisko skriptu.
1. Identificējiet nepieciešamos mainīgos
Atveriet skriptu savā iecienītākajā redaktorā. Varat izmantot kaut ko vienkāršu, piemēram, Notepad, kas ir iekļauts sistēmā Windows, taču rakstā šai apmācībai tiks izmantots Notepad++ . Notepad++ ir bezmaksas un labāk pielāgots šim nolūkam, tāpēc jums vajadzētu to izmēģināt.
Ņemiet vērā, ka nevajadzētu izmantot tādas lietojumprogrammas kā Word vai Google dokumenti, kas var ietekmēt skripta formatējumu. Izmantojiet teksta vai koda redaktoru.
Skriptā būs ietverta ieteicamā pamatinformācija par saderību un veiktspēju. Atstājiet tos tādus, kādi tie ir, un sāciet tālāk norādīto skriptu.
Sākas ar:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Sāciet , piešķirot AppLoggingRate vērtību “ 10” , kas tiks izmantota, lai aprēķinātu laiku starp logu reģistrēšanas mēģinājumiem.
Lietojot ar AHK miega funkciju, 1000 ir aptuveni vienāds ar vienu sekundi. Tātad, reizinot to ar AppLogingRate, jūs padarīsit SleepTime mainīgo "vienādu ar 10 sekundēm".
LogPath ir ceļš, ko izmanto žurnālu glabāšanai. Piemērā tiek izmantota vērtība %A_ScriptDir% , kas nozīmē "direktorijs, no kura palaižat skriptu". Ja vēlaties, varat izmantot pilnu ceļu uz citu mapi.
Visbeidzot iestatiet LastActiveWindow uz tukšu un izmantojiet vēlāk, lai pārbaudītu, vai aktīvais logs ir mainījies.
2. Pārraugiet aktīvos logus
Tā kā mēs vēlamies nepārtraukti uzraudzīt, kurš logs ir aktīvs un, ja tas mainās, ierakstīt nosaukumu un laiku, mums būs jāizmanto “cilpa”.
Kā norāda nosaukums, cilpa darbojas nepārtraukti, atkārtojot vienu un to pašu funkciju(-as). Pateicoties AHK vienkāršajai sintaksei, šāds "kods" ir salīdzinoši viegli saprotams:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Definējiet cilpu, vienkārši ierakstot vārdu "cilpa" un pēc tam atzīmējot tās sākumu ar "{" un beidzot ar "}". Viss, kas atrodas rindās starp “{” un “}”, darbosies mūžīgi, līdz iziesit no skripta.
Sāciet ciklu, gaidot ( Miega režīms ) laiku, kas vienāds ar mainīgo SleepTime. Šis mainīgais padara laika kontroli vienkāršāku. Tā vietā, lai pats rediģētu skriptu, varat tam "pateikt", izmantojot šo mainīgo, cik sekundes katrai cilpai vajadzētu ilgt.
Visbeidzot, izmantojiet ziņojumu lodziņu , lai pārbaudītu skriptu. Mēģiniet to saglabāt un palaist (veiciet dubultklikšķi uz skripta faila). Jūs redzēsit ziņojuma lodziņu ar uzrakstu "Tas darbojas!" (skripts darbojas) pēc 10 sekundēm.
Ar peles labo pogu noklikšķiniet uz AHK ikonas Windows teknē un izejiet no skripta, kad ir bijis pietiekami daudz ziņojumu lodziņu. Pēc tam dodieties atpakaļ uz redaktoru un aizstājiet MsgBox rindu ar:
WinGetActiveTitle, ActiveWindow
Šī ir komanda, lai iegūtu aktīvā loga nosaukumu. Izlaidiet papildu rindiņu “StoreActiveWindow” , ko piemērā izmantoja, skriptējot testēšanai.

Iegūstiet aktīvā loga nosaukumu un saglabājiet to mainīgajā
3. Iegūstiet pašreizējo laiku un vārdu
Tagad nāk skripta loģikas kodols. Salīdziniet aktīvā loga nosaukumu ar iepriekšējo un, ja tie atšķiras, "izdariet kaut ko". Viss ir tik vienkārši:
If ActiveWindow != %LastActiveWindow%
{
}
Ņemot vērā iepriekš minēto, pārbaudiet, vai pašreizējais ActiveWindow atšķiras ( != ) no LastActiveWindow mainīgajā saglabātās vērtības (kas sākotnēji tika iestatīts uz tukšu). Ja tā, AHK izpildīs kodu starp { un } , kas pašlaik ir tukšs.
Iestatiet funkciju, lai salīdzinātu aktīvā loga un iepriekšējā loga nosaukumu
Lai izmērītu loga darbības laiku, ir nepieciešams izsekot gan datumam, gan laikam. Tiks saglabāti dažādi žurnāli katrai dienai, izmantojot datumu to vārdā. Tiks reģistrētas ne tikai visas izmaiņas, bet arī laiks, kad tās notiek. Lai to izdarītu, mainīgajiem LogTime un LogFilename piešķiriet dažādus laika formātus ar:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
Pievienojiet šīs līnijas starp krokainajām iekavām sadaļā "If ActiveWindow..." , lai AHK tās palaistu, kad tā konstatē loga izmaiņas.

Iegūstiet pašreizējo laiku un piešķiriet to divos dažāda formāta mainīgajos
4. Datu formāts
Tagad mēs tveram laiku divos atšķirīgi formatētos mainīgajos, kā arī aktīvā loga nosaukumu. Tomēr pastāv neliela problēma: loga virsrakstā var būt arī nevēlamas rakstzīmes. Ir iespējams noņemt visas rakstzīmes, kas nav burtciparu rakstzīmes, izmantojot AHK atbalstu RegEx, ar:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
Paturot to prātā, "lūgsim" AHK noņemt no ActiveWindow mainīgā visas rakstzīmes, kas neatbilst iekavās norādītajam:
- Mazie burti
- Lielie burti
- Skaitļi
Pēc tam piešķiriet rezultātu mainīgajam LogWindow.

Notīriet aktīvā loga nosaukumu, izmantojot RegEx
Kad visi mainīgie ir iestatīti un visi vērtīgie dati ir savākti, tagad esat gatavs formatēt žurnālfailu un tā saturu.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Iepriekš mēs piešķīrām pašreizējo datumu mainīgajam LogFilename . Tāpēc pirmajā rindā datumam pievienojiet "_AppLog.md" , lai to izmantotu kā faila nosaukumu.

Iestatiet žurnālfaila nosaukumu
Otrajā rindā apvienojiet mainīgo LogPath , kas sākumā definēts kā žurnālfaila galamērķis, kopā ar faila nosaukumu. To kombinācija ir pilns žurnālfaila ceļa nosaukums, kas piešķirts mainīgajam LogFile.
Piešķirsim FileContent mainīgajam ekvivalentu vērtību " tukša rinda, laiks — loga nosaukums, vēl divas tukšas rindiņas, dalītājs un vēl viena tukša rindiņa .
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Burts "n" liek AHK ievadīt jaunu rindiņu (atbilst vienreizējai Enter nospiešanai ).
- Trīs domuzīmes parādīsies kā atdalītājs, kad tās tiks rādītas saderīgā skatītājā.
- "% LogTime%" un "% LogWindow%" ir mainīgie, kas saglabāja aktīvā loga nosaukumu un tā noteikšanas laiku.

Nosaka žurnālfaila saturu
5. Atjauniniet failus
Jūs esat definējis, ko mēs vēlamies rakstīt failā, kā arī tā ceļu un faila nosaukumu. Atliek tikai faktiskais, vienkāršs teksts:
FileAppend, %FileContent%, %LogFile%
Pievienojiet visu mainīgajā "FileContent" failam "LogFile".

Izmantojiet AHK pievienošanas funkciju, lai atjauninātu žurnāla failu vai izveidotu to no jauna
Funkcija "pievienot" failam pievienos "FileContent", ja tāds pastāv, bet arī izveidos to no jauna, ja fails neeksistē.
Ir viens pēdējais kniebiens: aizstājiet LastActiveWindow mainīgā saturu ar pašlaik aktīvo logu.

Ievieto pašreizējā aktīvā loga nosaukumu mainīgajā LastActiveWindow turpmākai pārbaudei
Lai to izdarītu, skriptam jāspēj noteikt nākamās loga izmaiņas.
LastActiveWindow = %ActiveWindow%
Un ar šo pēdējo papildinājumu Windows reģistrētājs ir gatavs! Saglabājiet skriptu un palaidiet to. Pēc tam pārbaudiet atzīmes failu, šis fails parādīsies skripta faila mapē pēc 10 sekundēm.

Windows žurnāla fails tiek izveidots tajā pašā direktorijā, kur skripts
Uzņemieties atbildību par savu laiku
Žurnāla failu var atvērt ar jebkuru teksta redaktoru. Tomēr tas izskatīsies labāk, ja to atvērsit ar atzīmes saderīgu redaktoru. Ekrānuzņēmumā varat redzēt žurnālu populārajā Typora redaktorā.

Skripta ģenerētais atzīmes fails tiek ielādēts programmā Typora
Tas ir vienkāršs veids, kā pārbaudīt, kuras lietotnes esat izmantojis visvairāk, un ir nepieciešams tikai tāds rīks kā Notepad.
Ja vēlaties kaut ko "īpašāku", vienmēr varat "stilizēt" reģistrētāja izvadi, lai tā vietā izveidotu CSV failu. Tas ir tikpat vienkārši, kā pielāgot FileContent mainīgo un izveidotā faila paplašinājumu. Pēc tam varat importēt šādus failus tādās lietojumprogrammās kā Excel, Google Calc vai pat trešās puses laika izsekotājiem.
Pilnīgs skripts
#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