Du begynner hver dag med de beste intensjoner, forynget, klar til å takle alle oppgavene dine. Så sjekker du klokken, den er 03:00, og du kan ikke la være å lure på hvor har all tid blitt av?
Du kan bruke en dedikert tidssporingsapp, men de kan være irriterende komplekse. Pluss, hvor er moroa med det?
Hvorfor ikke lage din egen enkle mini-app i stedet, som kan spore alle vinduene du har brukt tid på i løpet av dagen? Du trenger bare AutoHotKey, en grunnleggende tekstbehandler som Notisblokk, og omtrent en halv time. La oss sette oss fast.
Hva er AutoHotKey?
AutoHotKeys primære formål er skrivebordsautomatisering. Det er et skriptspråk som du kan sende tastetrykk og musebevegelser til ethvert aktivt vindu, lage hurtigtaster eller endre tastetrykk. Du kan for eksempel bruke den til deaktiver spesifikke taster på tastaturet.
Det er imidlertid den korte versjonen av historien og ikke virkelig representativ for hva AutoHotKey (forkortet AHK) kan gjøre. Det er fordi det har utviklet seg siden den første unnfangelsen og nå er et komplett skriptspråk. Du kan tenke på hva du kan gjøre med det som "programmering Lite."
Dermed kan du også bruke AHK til å lage mini-apper, akkurat som det vi har satt som mål for denne artikkelen. Merk at i denne artikkelen vil vi dykke rett inn i AHK, så det kan være lurt å sjekke vår raske AutoHotKey-guide for nybegynnere før du setter i gang.
Lag ditt eget vindu-loggingsskript med AutoHotKey
Før vi begynner, bør du ha AHK installert på datamaskinen din siden den vil fungere som "parser" for skriptet ditt. Det er "motoren" som lar skriptet ditt "kjøre".
Merk: Du kan også kompilere skriptet ditt etter at det er gjort for å gjøre det om til et faktisk kjørbart program. Det er imidlertid utenfor rammen av denne artikkelen.
Last ned AutoHotKey fra den offisielle siden og installer den.
Start din favorittfilbehandler, og besøk en mappe der du vil lagre skriptet ditt. Høyreklikk deretter på et tomt sted, og velg Ny > AutoHotKey-skript.
Når det er gjort, er det på tide å skrive selve manuset.
1. Definer de nødvendige variablene
Åpne skriptet i favorittredigeringsprogrammet ditt. Du kan bruke noe så enkelt som Notisblokk som følger med Windows, men vi kommer til å bruke Notisblokk++ for denne veiledningen. Siden Notepad++ er gratis og bedre skreddersydd for formålet, er det verdt å prøve det ut. Sørg også for å sjekke vår ultimate guide om alle hurtigtastene mens du sjekker det ut.
Merk at du ikke bør bruke noen apper som Word eller Google Docs, som kan påvirke formateringen. Bruk enten en tekst- eller "kode"-editor.
Skriptet vil allerede inneholde noe grunnleggende anbefalt for kompatibilitet og ytelse. La dem være som de er, og start manuset ditt under dem.
Starte med:
AppLoggingRate = 10; Tidsintervall (i sekunder) mellom aktive vindustittelfangst.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Vi begynner med å tilordne verdien "10" til AppLoggingRate, som vi vil bruke til å beregne tiden mellom å fange vindustitler.
Når den brukes med AHKs Sleep-funksjon, er 1000 omtrent lik et sekund. Så ved å multiplisere den med AppLogingRate, gjør vi variabelen SleepTime "lik ti sekunder".
LogPath er banen der vi ønsker å lagre loggene våre. Vi bruker verdien %A_ScriptDir%, som oversettes til "mappen der du kjører skriptet". Du kan bruke hele banen til en annen mappe hvis du vil.
Til slutt setter vi LastActiveWindow til tom. Vi bruker dette senere for å sjekke om det aktive vinduet har endret seg.
2. Overvåk Active Windows
Siden vi kontinuerlig ønsker å holde styr på hvilket vindu som er aktivt, og hvis det endres, logge tittel og tid, må vi bruke "en loop".
Som navnet sier, kjører en løkke kontinuerlig, og gjentar samme funksjon(er). Takket være AHKs enkle syntaks, tror vi at følgende "kode" er relativt selvforklarende:
Løkke
{
Sove %SleepTime%
Msgbox, det fungerer!
}
Vi definerer en løkke ved ganske enkelt å skrive ordet "løkke" og deretter merke begynnelsen med "{" og slutte med "}". Alt i linjene mellom "{" og "}" vil kjøre evig til du avslutter skriptet.
Vi begynner sløyfen med å vente (Sleep) i en tidsperiode som tilsvarer variabelen SleepTime. Vi satte den som en variabel i forrige kapittel for å gjøre det enklere å kontrollere tiden. I stedet for å redigere selve skriptet, kan du "fortelle" det, gjennom denne variabelen, hvor mange sekunder hver sløyfe skal vare.
Til slutt bruker vi en meldingsboks for å teste skriptet vårt. Prøv å lagre og kjøre den (dobbeltklikk på filen). Du vil se en meldingsboks som sier "Det fungerer!" etter ti sekunder.
Høyreklikk på AHKs ikon i Windows-skuffen og avslutt skriptet når du har fått nok meldingsbokser. Gå deretter tilbake til redigeringsprogrammet og erstatt MsgBox-linjen med:
WinGetActiveTitle, ActiveWindow
Dette er kommandoen for å få det aktive vinduets tittel. Ignorer den ekstra "StoreActiveWindow"-linjen, som vi brukte mens vi skrev skriptet for testing.
3. Få gjeldende tid og navn
Nå kommer kjernedelen av manusets logikk. Vi vil at det skal sammenligne det aktive vinduets navn med det forrige, og hvis de er forskjellige, "gjør noe". Det er så enkelt som følgende:
If ActiveWindow != %LastActiveWindow%
{
}
Med det ovennevnte sjekker vi om det aktive vindu for øyeblikket er forskjellig (!=) enn verdien som er lagret i variabelen LastActiveWindow (som vi først har satt til tom). Hvis det er det, vil AHK kjøre koden mellom { og }, som foreløpig er tomme.
Vi må holde styr på både dato og klokkeslett for å måle hvor lenge et vindu har vært aktivt. Vi fører forskjellige logger for hver dag, og bruker datoen i navnet deres. Og vi ønsker å logge ikke bare alle vinduer, men også når det skjedde. For det vil vi tilordne forskjellige tidsformater til variablene LogTime og LogFilename, med:
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, yyyy-MMM-dd
Legg til disse linjene mellom de krøllede parentesene under "Hvis ActiveWindow...", for å få AHK til å kjøre dem når den oppdager en vindusendring.
4. Dataformatering
Vi har fanget tiden i to forskjellig formaterte variabler, samt det aktive vinduets tittel. Det er imidlertid et lite problem: tittelen til et vindu kan også inneholde tegn vi ikke vil ha. Vi kan fjerne alle ikke-alfanumeriske tegn ved å bruke AHKs støtte for RegEx, med:
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
Med dette "berer" vi AHK å fjerne alle tegn fra ActiveWindow-variabelen som ikke samsvarer med det som står i parentes:
- Små bokstaver
- Store bokstaver
- Tall
Deretter tilordner vi resultatet til variabelen LogWindow.
Med alle variabler satt og alle verdifulle data hentet, er vi klare til å formatere loggfilen vår og dens innhold.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Vi har tidligere tildelt gjeldende dato til LogFilename-variabelen. Derfor, med den første linjen, sier vi bare at vi ønsker å legge til "_AppLog.md" til datoen for å bruke det som et filnavn.
På den andre linjen kombinerer vi variabelen LogPath, som vi definerte i begynnelsen som destinasjonen for loggene våre, med filnavnet. Kombinasjonen deres er hele banenavnet til loggen, tildelt LogFile-variabelen.
La oss tilordne ekvivalenten til "tom linje, Tid - Vinduets navn, ytterligere to tomme linjer, en skillelinje og en annen tom linje, for godt mål" til FileContent-variabelen.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- "`n"-ene forteller AHK å legge inn en ny linje (tilsvarer å trykke Enter én gang).
- De tre bindestrekene vises som en skillelinje når de presenteres i en markdown-kompatibel visning.
- "%LogTime%" og "%LogWindow%" er variablene der vi har lagret det aktive vinduets navn og tidspunktet det ble oppdaget.
5. Oppdater filen
Vi har definert hva vi vil skrive til filen vår, og vi kjenner banen og filnavnet. Alt som gjenstår er selve skrivingen, som er så enkel som:
FileAppend, %FileContent%, %LogFile%
Det er nesten like enkelt som vanlig engelsk: vi legger til alt i "FileContent"-variabelen til filen "LogFile".
"Legg til"-funksjonen vil legge til "FileContent" til filen hvis den eksisterer, men vil også opprette den fra bunnen av hvis den ikke gjør det.
Men vent, det er en siste tweak: å erstatte LastActiveWindow-variabelens innhold med det aktive vinduet.
Med dette vil skriptet kunne oppdage neste vindu skifte.
LastActiveWindow = %ActiveWindow%
Og med det siste tillegget er vindusloggeren din klar! Lagre den og kjør den. Sjekk deretter nedmerkingsfilen, som vises i skriptfilens mappe etter ti sekunder.
Mestre tiden din
Du kan åpne loggfilen med hvilken som helst tekstredigerer. Likevel vil det se penere ut hvis du åpner det i en markdown-kompatibel editor. På skjermbildet kan du se loggen vår i den populære Typora-editoren.
Det er en enkel måte å sjekke hvilke apper du har brukt mest tid på, og du trenger bare noe som Notepad for å bruke det.
Hvis du vil ha noe "mer", kan du alltid "style" loggerens utdata for å produsere CSV-filer i stedet. Det er like enkelt som å justere FileContent-variabelen og den opprettede filens filtype. Du kan deretter importere slike filer til apper som Excel, Google Calc eller til og med tredjeparts tidsregistrering.
Fullt manus:
#NoEnv; Anbefalt for ytelse og kompatibilitet med fremtidige AutoHotkey-utgivelser.
; #Varsle; Aktiver advarsler for å hjelpe med å oppdage vanlige feil.
SendMode Input; Anbefalt for nye skript på grunn av sin overlegne hastighet og pålitelighet.
SetWorkingDir %A_ScriptDir%; Sikrer en konsistent startkatalog.
; Variabler
;
AppLoggingRate = 10; Tidsintervall (i sekunder) mellom aktive vindustittelfangst.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logikk
;
Løkke
{
Sove %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
sove 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Exit
AutoHotkey lar deg lage tilpassede Windows-snarveier, makroer og mer! Her er noen nyttige AutoHotkey-skript for å komme i gang.
Les Neste
- Windows
- Produktivitet
- Windows
- Autohurtigtast
- Tidsfordriv
- Produktivitetstriks
OKs virkelige liv startet rundt klokken 10, da han fikk sin første datamaskin - en Commodore 128. Siden den gang har han smeltet nøkkelhetter ved å skrive 24/7, og forsøkt å spre The Word Of Tech til alle som er interessert nok til å lytte. Eller rettere sagt, les.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere