Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Du starter arbeidet hver dag tidlig slik at du kan løse alt i løpet av dagen. Så sjekker du klokken og den er 03:00, men arbeidet ditt er fortsatt ikke ferdig. Så hvor har tiden blitt av?

Du kan bruke en dedikert tidssporingsapp, men disse kan være kompliserte og frustrerende. I stedet, hvorfor ikke lage din egen enkle lille app? Denne applikasjonen kan spore alle vinduene du har brukt i løpet av dagen. Du trenger bare AutoHotKey, en grunnleggende tekstbehandler som Notepad, og omtrent en halv time. La oss komme i gang!

Lag ditt eget Windows-loggingsskript med AutoHotKey

Før du starter, bør du installere AHK på datamaskinen din fordi den vil fungere som en "parser" for skriptet. Det er verktøyet som lar skriptet ditt "kjøre".

Merk : Du kan også kompilere skriptet etter fullføring for å gjøre det om til et ekte kjørbart program. Det er imidlertid utenfor rammen av denne artikkelen.

Last ned AutoHotKey fra den offisielle nettsiden og installer den.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Velg Ny > AutoHotKey-skript

Start din favorittfilbehandler og få tilgang til mappen der du vil lagre skriptet. Høyreklikk deretter på en tom plassering og velg Ny > AutoHotKey Script .

Når det er fullført, er det på tide å skrive selve manuset.

1. Identifiser nødvendige variabler

Åpne skriptet i favorittredigeringsprogrammet ditt. Du kan bruke noe enkelt som Notepad som følger med Windows, men artikkelen vil bruke Notepad++  for denne opplæringen. Notepad++ er gratis og bedre tilpasset dette formålet, så du bør prøve det ut.

Merk at du ikke bør bruke noen programmer som Word eller Google Docs, som kan påvirke skriptets formatering. Bruk et tekst- eller koderedigeringsprogram.

Skriptet vil inneholde grunnleggende anbefalt informasjon om kompatibilitet og ytelse. La dem være som de er og start manuset nedenfor.

Begynner med:

AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Start med å tilordne verdien "10" til AppLoggingRate , som vil bli brukt til å beregne tiden mellom vindusloggingsforsøk.

Når den brukes med AHKs Sleep-funksjon, er 1000 omtrent lik ett sekund. Så ved å multiplisere den med AppLogingRate vil du gjøre SleepTime-variabelen "lik 10 sekunder".

LogPath er banen som brukes til å lagre logger. Eksemplet bruker verdien %A_ScriptDir% , som oversettes til "katalogen der du kjører skriptet". Du kan bruke hele banen til en annen mappe hvis du vil.

Til slutt, sett LastActiveWindow til tom og bruk senere for å sjekke om det aktive vinduet har endret seg.

2. Overvåk aktive vinduer

Siden vi ønsker å kontinuerlig overvåke hvilket vindu som er aktivt, og hvis det endres, registrere tittel og tid, må vi bruke en "løkke".

Som navnet antyder, kjører en løkke kontinuerlig, og gjentar samme funksjon(er). Takket være AHKs enkle syntaks er følgende "kode" relativt lett å forstå:

Loop
{
    Sleep %SleepTime%
    Msgbox, It Works!
}

Definer 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 for alltid til du avslutter skriptet.

Start sløyfen ved å vente ( Sleep ) i en tidsperiode lik SleepTime-variabelen. Denne variabelen gjør tidskontrollen enklere. I stedet for å redigere skriptet selv, kan du "fortelle" det, via denne variabelen, hvor mange sekunder hver sløyfe skal vare.

Til slutt, bruk Message Box for å teste skriptet. Prøv å lagre og kjøre den (dobbeltklikk på skriptfilen). Du vil se en meldingsboks som sier "Det fungerer!" (skript fungerer) etter 10 sekunder.

Høyreklikk AHKs ikon i Windows-skuffen og avslutt skriptet når du har fått nok meldingsbokser. Gå deretter tilbake til editoren og erstatt MsgBox- linjen med:

WinGetActiveTitle, ActiveWindow

Dette er kommandoen for å få tittelen på det aktive vinduet. Utelat den ekstra "StoreActiveWindow" -linjen som eksemplet brukte under skripting for testing.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Få tittelen på det aktive vinduet og lagre det i en variabel

3. Få gjeldende tid og navn

Nå kommer kjernen i skriptlogikken. Sammenlign det aktive vinduets navn med det forrige, og hvis de er forskjellige, "gjør noe". Alt er så enkelt som dette:

If ActiveWindow != %LastActiveWindow%
{
}

Gitt ovenstående, sjekk om gjeldende ActiveWindow er forskjellig ( != ) fra verdien som er lagret i LastActiveWindow- variabelen (som opprinnelig ble satt til tom). I så fall vil AHK kjøre koden mellom { og } , som for øyeblikket er tom.

Still inn funksjonen for å sammenligne tittelen på det aktive vinduet og det forrige vinduet

Det er nødvendig å spore både dato og klokkeslett for å måle oppetiden til et vindu. Ulike logger for hver dag, som bruker datoen i deres navn, vil bli beholdt. Ikke bare hver endring, men tiden den inntreffer, vil også bli registrert. For å gjøre det, 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øllete klammeparentesene i "Hvis ActiveWindow..." , slik at AHK kjører dem når den oppdager en vindusendring.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Få gjeldende tid og tilordne den i to variabler i forskjellige formater

4. Dataformat

Vi fanger nå tiden i to forskjellige formaterte variabler, samt tittelen på det aktive vinduet. Det er imidlertid et lite problem: Vinduets tittel kan også inneholde uønskede tegn. Det er mulig å fjerne alle ikke-alfanumeriske tegn ved å bruke AHKs støtte for RegEx, med:

LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")

Med dette i tankene, la oss "be" AHK om å fjerne alle tegn fra ActiveWindow-variabelen som ikke samsvarer med det som står i parentes:

  • Små bokstaver
  • Stor bokstav
  • Tall

Deretter tilordner du resultatet til LogWindow-variabelen.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Rydd opp i det aktive vinduets tittel med RegEx

Med alle variabler satt og alle verdifulle data samlet inn, er du nå klar til å formatere loggfilen og dens innhold.

LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%

Tidligere tildelte vi gjeldende dato til LogFilename-variabelen. Derfor, for den første linjen, legg til "_AppLog.md" til datoen for å bruke den som filnavn.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Angi loggfilnavnet

På den andre linjen, kombiner variabelen LogPath , definert i begynnelsen som destinasjonen for loggfilen sammen med filnavnet. Kombinasjonen deres er det fullstendige banenavnet til loggfilen, tildelt variabelen LogFile.

La oss tilordne tilsvarende verdi av "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
  • Bokstaven "n" forteller AHK å legge inn en ny linje (tilsvarer å trykke Enter én gang).
  • Tre streker vil vises som en skilletegn når de vises i en kryss-ned-kompatibel visning.
  • "% LogTime%" og "% LogWindow%" er variabler som lagret navnet på det aktive vinduet og tidspunktet det ble oppdaget.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Bestemmer innholdet i loggfilen

5. Oppdater filer

Du har definert hva vi vil skrive til filen, samt dens bane og filnavn. Alt som gjenstår er den faktiske, enkle teksten som følger:

FileAppend, %FileContent%, %LogFile%

Legg til alt i "FileContent" -variabelen til "LogFile"-filen.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Bruk AHKs Append-funksjon for å oppdatere loggfilen eller lage en fra bunnen av

Funksjonen "legg til" vil legge til "FileContent" til filen hvis den finnes, men vil også lage den fra bunnen av hvis filen ikke eksisterer.

Det er en siste tweak: erstatt innholdet i LastActiveWindow- variabelen med det aktive vinduet.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Setter inn tittelen på det gjeldende aktive vinduet i LastActiveWindow-variabelen for fremtidig testing

For å gjøre dette, skal skriptet være i stand til å oppdage neste vindusendring.

LastActiveWindow = %ActiveWindow%

Og med det siste tillegget er Windows-loggeren klar! Lagre skriptet og kjør det. Deretter, sjekk markdown-filen, denne filen vil vises i skriptfilmappen etter 10 sekunder.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Windows-loggfilen opprettes i samme katalog som skriptet

Ta kontroll over din egen tid

Du kan åpne loggfilen med et hvilket som helst tekstredigeringsprogram. Imidlertid vil det se bedre ut hvis du åpner det i en markdown-kompatibel editor. På skjermbildet kan du se loggen i den populære Typora-editoren.

Hvordan lage et tidsregistreringsprogram på Windows med AutoHotKey

Markdown-filen som genereres av skriptet, lastes inn i Typora

Det er en enkel måte å sjekke hvilke apper du har brukt mest tid og krever bare et verktøy som Notisblokk for å bruke.

Hvis du vil ha noe "mer spesielt", kan du alltid "style" loggerens utdata for å lage en CSV-fil i stedet. Det er like enkelt som å justere FileContent- variabelen og utvidelsen av den opprettede filen. Du kan deretter importere slike filer til applikasjoner som Excel, Google Calc eller til og med tredjeparts tidsregistrering.

Komplett manus

#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

Hvordan sjekke om et datanettverk er sikkert

Hvordan sjekke om et datanettverk er sikkert

CyRadar Internet Security Check Tool er et verktøy for å evaluere datamaskinens evne til å forhindre cyberangrep, helt gratis.

Instruksjoner for installasjon og konfigurering av DNS Server på Windows Server 2016

Instruksjoner for installasjon og konfigurering av DNS Server på Windows Server 2016

Å konfigurere DNS er det samme som å konfigurere det, noe som betyr at du ikke trenger å bry deg for mye eller be noen admin om å hjelpe deg med det, fordi du kan gjøre dette selv, med detaljerte instruksjoner som følger i denne artikkelen.

Hvordan sjekke datamaskinens harddiskkapasitet

Hvordan sjekke datamaskinens harddiskkapasitet

Å se på harddiskkapasiteten er like viktig. På det tidspunktet vil brukerne vite kapasiteten til harddisken som er i bruk og tilgjengelig kapasitet på harddiskene på datamaskinen og den bærbare datamaskinen.

Rett opp feilen med å ikke kunne endre temaet

Rett opp feilen med å ikke kunne endre temaet

Sitter Windows 7-temaet ditt fast på det klassiske alternativet? Hvis det er situasjonen du opplever, er det noen få rettelser du kan prøve for å se om du løser problemet!

Bør jeg stole på CCleaner igjen?

Bør jeg stole på CCleaner igjen?

Mange anbefaler at du slutter å bruke CCleaner. Men det var år siden. Nå, hvordan har appen endret seg og er den verdt å bruke? La oss finne svaret i den følgende artikkelen!

Slik bruker du Microsoft Authenticator-appen

Slik bruker du Microsoft Authenticator-appen

Microsoft Authenticator er en applikasjon som muliggjør tofaktorautentisering på støttede apper og nettsteder.

Slik bruker du Reduser minne for å frigjøre RAM-minne

Slik bruker du Reduser minne for å frigjøre RAM-minne

Reduser minne er programvare som frigjør RAM på datamaskinen, og hjelper datamaskinen med å kjøre raskere. Artikkelen nedenfor vil veilede deg i bruken av Reduser minne.

Slik starter du datamaskinen på nytt med PowerShell

Slik starter du datamaskinen på nytt med PowerShell

Windows gir brukere mange måter å starte datamaskinen på nytt. Brukere kan bruke Power User Menu, Start Menu eller avslutningsverktøy og til og med den klassiske Shutdown-dialogboksen. Det er imidlertid en annen måte brukerne ikke vet om: å bruke PowerShell.

Slik bruker du IP Fjern blokkering av falsk IP på Chrome

Slik bruker du IP Fjern blokkering av falsk IP på Chrome

IP Unblock er et VPN-verktøy i Chrome-nettleseren, som hjelper brukere med å skjule IP-adressene sine og få tilgang til blokkerte nettsteder.

Hvorfor bør du tenke deg nøye om før du logger på med en sosial nettverkskonto?

Hvorfor bør du tenke deg nøye om før du logger på med en sosial nettverkskonto?

Hver gang du registrerer deg for en ny tjeneste, kan du velge brukernavn og passord eller bare logge på med Facebook eller Twitter. Men bør du gjøre det?