Începeți fiecare zi cu cele mai bune intenții, întineriți, gata să vă ocupați de toate sarcinile. Apoi, verifici ora, este ora 03:00 și nu poți să nu te întrebi, unde a dispărut tot timpul?
Ai putea folosi o aplicație dedicată de urmărire a timpului, dar acestea pot fi enervant de complexe. În plus, unde este distracția în asta?
De ce să nu-ți faci în schimb propria ta mini-aplicație simplă, care ar putea urmări toate ferestrele în care ai petrecut timp în timpul zilei? Veți avea nevoie doar de AutoHotKey, un procesor de text de bază precum Notepad și aproximativ jumătate de oră. Să rămânem blocați.
Ce este AutoHotKey?
Scopul principal al AutoHotKey este automatizarea desktopului. Este un limbaj de scripting prin care puteți trimite apăsări de taste și mișcări ale mouse-ului către orice fereastră activă, puteți crea taste rapide sau modifica apăsările de taste. Puteți, de exemplu, să îl folosiți pentru dezactivați anumite taste de pe tastatură.
Cu toate acestea, aceasta este versiunea scurtă a poveștii și nu reprezintă cu adevărat ceea ce poate face AutoHotKey (AHK pe scurt). Asta pentru că a evoluat de la concepția sa inițială și acum este un limbaj de scripting complet. Vă puteți gândi la ceea ce puteți face cu el ca „programare Lite”.
Astfel, puteți folosi și AHK pentru a crea mini-aplicații, exact ca ceea ce ne-am stabilit ca obiectiv pentru acest articol. Rețineți că în acest articol ne vom scufunda direct în AHK, așa că este posibil să doriți să verificați Ghidul nostru rapid AutoHotKey pentru începători înainte de a începe.
Crearea propriului script de înregistrare a ferestrelor cu AutoHotKey
Înainte de a începe, ar trebui să aveți instalat AHK pe computer, deoarece va acționa ca „parser” pentru scriptul dumneavoastră. Este „motorul” care va permite scriptului „să ruleze”.
Notă: De asemenea, puteți compila scriptul după ce este gata pentru a-l transforma într-un program executabil real. Cu toate acestea, acest lucru este în afara domeniului de aplicare al acestui articol.
Descărcați AutoHotKey de pe site-ul său oficial și instalați-l.
Porniți managerul de fișiere preferat și vizitați un folder în care doriți să stocați scriptul. Apoi, faceți clic dreapta pe un loc gol și alegeți Nou > Script AutoHotKey.
Odată ce s-a terminat, este timpul să scrieți scenariul propriu-zis.
1. Definiți variabilele necesare
Deschideți scriptul în editorul dvs. preferat. Puteți folosi ceva la fel de simplu ca Notepad care vine cu Windows, dar vom folosi Notepad++ pentru acest ghid. Deoarece Notepad++ este gratuit și mai bine adaptat acestui scop, merită să îl încercați. Asigurați-vă că verificați și ghidul nostru suprem pentru toate comenzile rapide de la tastatură în timp ce îl verifici.
Rețineți că nu ar trebui să utilizați nicio aplicație precum Word sau Google Docs, care ar putea afecta formatarea acesteia. Utilizați fie un editor de text, fie un editor „cod”.
Scriptul va conține deja câteva elemente de bază recomandate pentru compatibilitate și performanță. Lăsați-le așa cum sunt și începeți scenariul sub ele.
Începe cu:
AppLoggingRate = 10; Interval de timp (în secunde) dintre capturile active ale titlului ferestrei.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Începem prin a atribui valoarea „10” lui AppLoggingRate, pe care o vom folosi pentru a calcula timpul dintre captarea titlurilor ferestrelor.
Când este utilizat cu funcția Sleep a AHK, 1000 este aproximativ egal cu o secundă. Deci, înmulțind-o cu AppLogingRate, facem ca variabila SleepTime să fie „egale cu zece secunde”.
LogPath este calea în care dorim să ne stocăm jurnalele. Folosim valoarea %A_ScriptDir%, care se traduce prin „dosarul de unde rulați scriptul”. Puteți folosi calea completă către alt folder dacă doriți.
În cele din urmă, setăm LastActiveWindow la gol. O vom folosi mai târziu pentru a verifica dacă fereastra activă s-a schimbat.
2. Monitorizați Windows-ul activ
Deoarece dorim să urmărim în mod continuu ce fereastră este activă și, dacă se schimbă, să înregistrăm titlul și ora, va trebui să folosim „o buclă”.
După cum spune și numele, o buclă rulează continuu, repetând aceeași funcție (e). Datorită sintaxei simple a lui AHK, credem că următorul „cod” se explică relativ de la sine:
Buclă
{
Sleep %SleepTime%
Msgbox, funcționează!
}
Definim o buclă prin simpla introducere a cuvântului „buclă” și apoi marcând începutul cu „{” și sfârșitul cu „}”. Tot ce se află în rândurile dintre „{” și „}” va rula perpetuu până când ieși din script.
Începem bucla așteptând (Sleep) o perioadă de timp egală cu variabila SleepTime. Am stabilit-o ca o variabilă în capitolul anterior pentru a face controlul timpului mai simplu. În loc să editați scriptul în sine, îi puteți „spune”, prin această variabilă, câte secunde ar trebui să dureze fiecare buclă.
În cele din urmă, folosim o casetă de mesaje pentru a ne testa scriptul. Încercați să îl salvați și să îl rulați (faceți dublu clic pe fișierul său). Veți vedea o casetă de mesaj care spune „Funcționează!” după zece secunde.
Faceți clic dreapta pe pictograma AHK din tava Windows și ieșiți din script când aveți suficiente casete de mesaje. Apoi, reveniți la editor și înlocuiți linia MsgBox cu:
WinGetActiveTitle, ActiveWindow
Aceasta este comanda pentru obținerea titlului ferestrei active. Ignorați linia suplimentară „StoreActiveWindow”, pe care am folosit-o în timpul scrierii scriptului pentru testare.
3. Obțineți ora și numele curente
Acum vine partea centrală a logicii scenariului. Vrem să compare numele ferestrei active cu cel precedent, iar dacă sunt diferite, „fă ceva”. Este la fel de simplu ca următorul:
Dacă ActiveWindow != %LastActiveWindow%
{
}
Cu cele de mai sus, verificăm dacă ActiveWindow în prezent este diferit (!=) de valoarea stocată în variabila LastActiveWindow (pe care am setat-o inițial la gol). Dacă este, AHK va executa codul între { și }, care deocamdată sunt goale.
Trebuie să ținem evidența atât a datei, cât și a orei pentru a măsura cât timp a fost activă o fereastră. Vom păstra jurnalele diferite pentru fiecare zi, folosind data din numele lor. Și vrem să înregistrăm nu numai fiecare schimbare de fereastră, ci și cand s-a întâmplat. Pentru aceasta, vom atribui diferite formate de timp variabilelor LogTime și LogFilename, cu:
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-MMM-zz
Adăugați acele linii între paranteze sub „Dacă ActiveWindow...”, pentru ca AHK să le ruleze atunci când detectează o schimbare a ferestrei.
4. Formatarea datelor
Am luat ora în două variabile formatate diferit, precum și titlul ferestrei active. Cu toate acestea, există o mică problemă: titlul unei ferestre poate conține și caractere pe care nu le dorim. Putem elimina toate caracterele non-alfanumerice folosind suportul AHK pentru RegEx, cu:
LogWindow := Regexreplace (ActiveWindow, „[^a-zA-Z0-9]”, „ „)
Prin aceasta, îi „spunem” lui AHK să elimine toate caracterele din variabila ActiveWindow care nu se potrivesc cu ceea ce este între paranteze:
- Litere mici
- Litere mari
- Numerele
Apoi, atribuim rezultatul variabilei LogWindow.
Cu toate variabilele setate și toate datele valoroase preluate, suntem gata să formatăm fișierul jurnal și conținutul acestuia.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Am atribuit anterior data curentă variabilei LogFilename. Astfel, cu prima linie, spunem doar că vrem să adăugăm „_AppLog.md” la dată pentru a o folosi ca nume de fișier.
În a doua linie, combinăm variabila LogPath, pe care am definit-o la început ca destinație pentru jurnalele noastre, cu numele fișierului. Combinația lor este calea completă a jurnalului, atribuită variabilei LogFile.
Să atribuim echivalentul „liniei goale, Timp - Numele ferestrei, încă două linii goale, un divizor și o altă linie goală, pentru o măsură bună” variabilei FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Semnele „`n” îi spun lui AHK să introducă o nouă linie (echivalentul cu apăsarea Enter o dată).
- Cele trei liniuțe vor apărea ca un separator atunci când sunt prezentate într-un vizualizator compatibil cu markdown.
- „%LogTime%” și „%LogWindow%” sunt variabilele în care am stocat numele ferestrei active și ora la care a fost detectată.
5. Actualizați fișierul
Am definit ce vrem să scriem în fișierul nostru și îi știm calea și numele fișierului. Tot ce rămâne este scrisul propriu-zis, care este la fel de ușor ca:
FileAppend, %FileContent%, %LogFile%
Este aproape la fel de simplu ca limba engleză simplă: anexăm totul din variabila „FileContent” la fișierul „LogFile”.
Funcția „adăugați” va adăuga „FileContent” la fișier dacă acesta există, dar îl va crea și de la zero dacă nu există.
Dar stați, există o ultimă modificare: înlocuirea conținutului variabilei LastActiveWindow cu fereastra activă în prezent.
Cu aceasta, scriptul va putea detecta Următorul schimbarea ferestrei.
LastActiveWindow = %ActiveWindow%
Și odată cu această ultimă adăugare, dispozitivul dvs. de înregistrare a ferestrei este gata! Salvați-l și rulați-l. Apoi, verificați fișierul markdown, care va apărea în folderul fișierului script după zece secunde.
Stăpânește-ți timpul
Puteți deschide fișierul jurnal cu orice editor de text. Totuși, va arăta mai frumos dacă îl deschideți într-un editor compatibil cu markdown. În captură de ecran, puteți vedea jurnalul nostru în editorul popular Typora.
Este o modalitate ușoară de a verifica ce aplicații ați petrecut cel mai mult timp și aveți nevoie doar de ceva precum Notepad pentru a le folosi.
Dacă doriți ceva „mai mult”, puteți oricând să „stilați” rezultatul logger-ului pentru a produce în schimb fișiere CSV. Este la fel de ușor ca ajustarea variabilei FileContent și a extensiei fișierului creat. Apoi, puteți importa astfel de fișiere în aplicații precum Excel, Google Calc sau chiar instrumente de urmărire a timpului terță parte.
Scenariul complet:
#NoEnv; Recomandat pentru performanță și compatibilitate cu viitoarele versiuni AutoHotkey.
; #A avertiza; Activați avertismentele pentru a ajuta la detectarea erorilor comune.
Intrare SendMode; Recomandat pentru scripturi noi datorită vitezei și fiabilității sale superioare.
SetWorkingDir %A_ScriptDir%; Asigură un director de pornire consistent.
; Variabile
;
AppLoggingRate = 10; Interval de timp (în secunde) dintre capturile active ale titlului ferestrei.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logică
;
Buclă
{
Sleep %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Dacă ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, aaaa-LL-zz
LogWindow := Regexreplace (ActiveWindow, „[^a-zA-Z0-9]”, „ „)
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
dormi 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Ieșire
AutoHotkey vă permite să faceți comenzi rapide, macrocomenzi personalizate pentru Windows și multe altele! Iată câteva scripturi AutoHotkey utile pentru a începe.
Citiți în continuare
- Windows
- Productivitate
- Windows
- AutoHotkey
- De gestionare a timpului
- Trucuri de productivitate
Viața adevărată a lui OK a început pe la 10 ani, când și-a luat primul computer - un Commodore 128. De atunci, el a topit tastele tastând 24/7, încercând să răspândească The Word Of Tech oricui este suficient de interesat să asculte. Sau, mai degrabă, citește.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona