Minden napot a legjobb szándékkal kezdesz, megfiatalodva, készen állsz arra, hogy megbirkózz minden feladatoddal. Aztán megnézed az időt, hajnali 3:00 van, és nem tudsz segíteni, de azon tűnődsz, hova tűnt az idő?

Használhat egy dedikált időkövető alkalmazást, de ezek bosszantóan összetettek lehetnek. Ráadásul hol van ebben a móka?

Miért nem készíthet helyette saját, egyszerű minialkalmazást, amely nyomon követheti az összes olyan ablakot, amelyen a nap folyamán időt töltött? Csak az AutoHotKey-re, egy olyan alapvető szövegszerkesztőre lesz szüksége, mint a Jegyzettömb, és körülbelül fél órára. Ragadjunk bele.

Mi az AutoHotKey?

Az AutoHotKey elsődleges célja az asztali számítógépek automatizálása. Ez egy szkriptnyelv, amellyel billentyűleütéseket és egérmozdulatokat küldhet bármely aktív ablakba, gyorsbillentyűket hozhat létre, vagy módosíthatja a billentyűleütéseket. Használhatja például letiltja a billentyűzet bizonyos billentyűit.

Ez azonban a történet rövid változata, és nem igazán reprezentálja azt, amit az AutoHotKey (röviden AHK) tud. Ez azért van, mert a kezdeti koncepció óta fejlődött, és mára egy teljes szkriptnyelv. Úgy gondolhatja, hogy mit tehet vele, mint "programozás Lite".

instagram viewer

Így az AHK segítségével minialkalmazásokat is készíthet, pontosan úgy, ahogyan ezt a cikkben célul tűztük ki. Vegye figyelembe, hogy ebben a cikkben közvetlenül az AHK-val foglalkozunk, ezért érdemes ellenőrizni gyors AutoHotKey útmutatónk kezdőknek mielőtt elkezdené.

Saját ablaknaplózó szkript létrehozása az AutoHotKey segítségével

Mielőtt elkezdené, telepítenie kell az AHK-t a számítógépére, mivel ez a szkript "elemzőjeként" fog működni. Ez a "motor", amely lehetővé teszi a szkript "futását".

Megjegyzés: A szkriptet a befejezés után is lefordíthatja, hogy tényleges végrehajtható programmá alakítsa. Ez azonban kívül esik a cikk keretein.

Töltse le az AutoHotKey alkalmazást a hivatalos oldaláról és telepítse.

Indítsa el kedvenc fájlkezelőjét, és keresse fel azt a mappát, ahol tárolni szeretné a szkriptet. Ezután kattintson jobb gombbal egy üres helyre, és válassza ki Új > AutoHotKey Script.

Ha ez megtörtént, ideje megírni a tényleges forgatókönyvet.

1. Határozza meg a szükséges változókat

Nyissa meg a szkriptet kedvenc szerkesztőjében. Használhat valami olyan egyszerűt, mint a Windowshoz tartozó Jegyzettömb, de mi használni fogjuk Jegyzettömb++ ehhez az útmutatóhoz. Mivel a Notepad++ ingyenes és erre a célra jobban szabott, érdemes kipróbálni. Ügyeljen arra is, hogy ellenőrizze végső útmutatónk az összes billentyűparancshoz miközben megnézed.

Vegye figyelembe, hogy ne használjon olyan alkalmazásokat, mint a Word vagy a Google Dokumentumok, amelyek befolyásolhatják a formázást. Használjon szöveg- vagy "kód" szerkesztőt.

A szkript már tartalmazni fog néhány, a kompatibilitás és a teljesítmény érdekében ajánlott alapokat. Hagyja őket úgy, ahogy vannak, és indítsa el alattuk a forgatókönyvet.

Kezdeni valamivel:

AppLoggingRate = 10; Időintervallum (másodpercben) az aktív ablakcímek rögzítése között.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Először a „10” értéket rendeljük az AppLoggingRate-hez, amelyet az ablakcímek rögzítése közötti idő kiszámításához használunk.

Az AHK alvó funkciójával együtt használva az 1000 nagyjából egy másodpercnek felel meg. Tehát az AppLogingRate-tel megszorozva a SleepTime változót „tíz másodperccel egyenlővé tesszük”.

A LogPath az az útvonal, ahol a naplóinkat tárolni szeretnénk. A %A_ScriptDir% értéket használjuk, ami azt jelenti, hogy "a mappa, ahonnan a szkriptet futtatja". Ha szeretné, használhatja egy másik mappához vezető teljes elérési utat.

Végül a LastActiveWindow-t üresre állítottuk. Ezt később felhasználjuk annak ellenőrzésére, hogy az aktív ablak megváltozott-e.

2. Figyelje az aktív Windows rendszert

Mivel folyamatosan nyomon akarjuk követni, hogy melyik ablak aktív, és ha változik, naplózzuk a címét és idejét, ezért "hurkot" kell használnunk.

Amint a neve is mutatja, egy ciklus folyamatosan fut, ugyanazt a funkciót megismételve. Az AHK egyszerű szintaxisának köszönhetően úgy gondoljuk, hogy a következő "kód" viszonylag magától értetődő:

Hurok
{
Alvás %SleepTime%
Msgbox, működik!
}

A ciklust úgy határozzuk meg, hogy egyszerűen beírjuk a „loop” szót, majd megjelöljük a kezdetét „{”-val, a végét pedig „}”-vel. A "{" és "}" közötti sorokban minden folyamatosan fut, amíg ki nem lép a szkriptből.

A ciklust úgy kezdjük, hogy a SleepTime változóval megegyező ideig várunk (Sleep). Az előző fejezetben változóként állítottuk be, hogy egyszerűbbé tegyük az idő szabályozását. Ahelyett, hogy magát a szkriptet szerkesztené, ezen a változón keresztül "megmondhatja" neki, hogy egy ciklus hány másodpercig tartson.

Végül egy Message Box segítségével teszteljük a szkriptünket. Próbálja meg elmenteni és futtatni (kattintson duplán a fájljára). Ekkor megjelenik egy üzenetdoboz, amely a következőt írja: „Működik!” tíz másodperc után.

Kattintson jobb gombbal az AHK ikonjára a Windows tálcán, és lépjen ki a szkriptből, ha már elegendő üzenetdoboza van. Ezután térjen vissza a szerkesztőhöz, és cserélje ki az MsgBox sort a következőre:

WinGetActiveTitle, ActiveWindow

Ez a parancs az aktív ablak címének lekéréséhez. Hagyja figyelmen kívül az extra "StoreActiveWindow" sort, amelyet a szkript írásakor használtunk teszteléshez.

3. Szerezze meg az aktuális időt és nevet

Most jön a szkript logikájának központi része. Azt akarjuk, hogy összehasonlítsa az aktív ablak nevét az előzővel, és ha különbözik, akkor "csináljon valamit". Ez olyan egyszerű, mint a következő:

Ha ActiveWindow != %LastActiveWindow%
{
}

A fentiekkel ellenőrizzük, hogy az aktuális ActiveWindow eltér-e (!=) a LastActiveWindow változóban tárolt értéktől (amelyet kezdetben üresre állítottunk). Ha igen, az AHK végrehajtja a { és } közötti kódot, amelyek egyelőre üresek.

A dátumot és az időt is nyomon kell követnünk, hogy megmérhessük, mennyi ideig volt aktív egy ablak. Minden naphoz más-más naplót vezetünk, a nevükben szereplő dátumot használva. És nem csak minden ablakváltozást szeretnénk naplózni, hanem azt is amikor ez történt. Ehhez különböző időformátumokat rendelünk a LogTime és LogFilename változókhoz, a következőkkel:

FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, éééé-HH-nn

Adja hozzá ezeket a sorokat a göndör zárójelek közé az „If ActiveWindow...” alatt, hogy az AHK futtassa őket, amikor ablakváltozást észlel.

4. Adatformázás

Megragadtuk az időt két különböző formátumú változóban, valamint az aktív ablak címében. Van azonban egy apró probléma: az ablak címe olyan karaktereket is tartalmazhat, amelyeket nem szeretnénk. Minden nem alfanumerikus karaktert eltávolíthatunk az AHK RegEx támogatásával, a következőkkel:

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

Ezzel "megmondjuk" az AHK-nak, hogy távolítson el minden olyan karaktert az ActiveWindow változóból, amely nem egyezik a zárójelben szereplővel:

  • Kisbetűk
  • Nagybetűs
  • Számok

Ezután az eredményt a LogWindow változóhoz rendeljük.

Az összes változó beállításával és az összes értékes adat megszerzésével készen állunk a naplófájlunk és annak tartalmának formázására.

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

Korábban az aktuális dátumot a LogFilename változóhoz rendeltük. Így az első sorban csak azt mondjuk, hogy a dátumhoz a "_AppLog.md" értéket szeretnénk hozzáadni, hogy fájlnévként használhassuk.

A második sorban a LogPath változót, amelyet az elején definiáltunk naplóink ​​célpontjaként, a fájlnévvel kombináljuk. Ezek kombinációja a napló teljes elérési útja, amely a LogFile változóhoz van hozzárendelve.

Rendeljük a FileContent változóhoz az "üres sor, idő - ablak neve, további két üres sor, egy elválasztó és egy másik üres sor, a jó mértékért" megfelelőjét.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • Az "n" jelzi az AHK-nak, hogy írjon be egy új sort (az Enter egyszeri megnyomásának megfelelő).
  • A három kötőjel elválasztóként jelenik meg, ha egy leértékelés-kompatibilis megjelenítőben jelenik meg.
  • A „%LogTime%” és a „%LogWindow%” azok a változók, amelyekben tároltuk az aktív ablak nevét és az észlelés időpontját.

5. Frissítse a fájlt

Meghatároztuk, hogy mit akarunk írni a fájlunkba, és ismerjük annak elérési útját és fájlnevét. Már csak a tényleges írás van hátra, ami olyan egyszerű, mint:

FileAppend, %FileContent%, %LogFile%

Ez majdnem olyan egyszerű, mint az egyszerű angol: a "FileContent" változóban mindent hozzáfűzünk a "LogFile" fájlhoz.

Az "hozzáfűzés" funkció hozzáadja a "FileContent"-et a fájlhoz, ha létezik, de a semmiből is létrehozza, ha nem.

De várj, van még egy utolsó csípés: a LastActiveWindow változó tartalmának lecserélése az éppen aktív ablakra.

Ezzel a szkript képes lesz észlelni a következő ablakcsere.

LastActiveWindow = %ActiveWindow%

És ezzel az utolsó kiegészítéssel az ablaknaplózója készen áll! Mentse el, és futtassa. Ezután nézze meg a markdown fájlt, amely tíz másodperc múlva megjelenik a szkriptfájl mappájában.

Uralja el az idejét

A naplófájlt bármilyen szövegszerkesztővel megnyithatja. Ennek ellenére szebben fog kinézni, ha egy markdown-kompatibilis szerkesztőben nyitja meg. A képernyőképen láthatja naplónkat a népszerű Typora szerkesztőben.

Ez egy egyszerű módja annak, hogy ellenőrizni tudja, melyik alkalmazással töltötte a legtöbb időt, és a használatához csak valami, például a Jegyzettömbre van szüksége.

Ha valami "többet" szeretne, bármikor "stíluszhatja" a naplózó kimenetét úgy, hogy helyette CSV-fájlokat készítsen. Ez olyan egyszerű, mint a FileContent változó és a létrehozott fájl kiterjesztésének módosítása. Ezután importálhatja ezeket a fájlokat olyan alkalmazásokba, mint az Excel, a Google Calc vagy akár harmadik féltől származó időkövetők.

Teljes forgatókönyv:

#NoEnv; A teljesítmény és a jövőbeli AutoHotkey-kiadásokkal való kompatibilitás miatt ajánlott.
; #Figyelmeztet; Figyelmeztetések engedélyezése a gyakori hibák észlelésében.
SendMode bemenet; Kiváló sebessége és megbízhatósága miatt új szkriptekhez ajánlott.
SetWorkingDir %A_ScriptDir%; Konzisztens kezdőkönyvtárat biztosít.
; Változók
;
AppLoggingRate = 10; Időintervallum (másodpercben) az aktív ablakcímek rögzítése között.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logika
;
Hurok
{
Alvás %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Ha ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, éééé-hh-nn
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
alvás 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Kijárat
10 klassz AutoHotkey szkript (és hogyan készítsd el a sajátodat!)

Az AutoHotkey segítségével egyéni Windows-parancsikonokat, makrókat és sok mást hozhat létre! Íme néhány hasznos AutoHotkey szkript a kezdéshez.

Olvassa el a következőt

RészvényCsipogEmail
Kapcsolódó témák
  • ablakok
  • Termelékenység
  • ablakok
  • AutoHotkey
  • Idő beosztás
  • Termelékenységi trükkök
A szerzőről
Odysseas Kourafalos (12 cikk megjelent)

OK igazi élete 10 körül kezdődött, amikor megkapta első számítógépét – egy Commodore 128-at. Azóta a nap 24 órájában gépelve olvasztja a billentyűket, és megpróbálja elterjeszteni a The Word Of Tech-t minden érdeklődő számára ahhoz, hogy meghallgassa. Vagy inkább olvasni.

Továbbiak Odysseas Kourafalostól

Iratkozzon fel hírlevelünkre

Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!

Kattintson ide az előfizetéshez