Започвате всеки ден с най-добри намерения, подмладени, готови да се справите с всичките си задачи. След това проверявате часа, 03:00 часа е и няма как да не се чудите, къде е отишло цялото време?

Можете да използвате специално приложение за проследяване на времето, но те могат да бъдат досадно сложни. Освен това, къде е забавното в това?

Защо вместо това да не направите свое собствено просто мини приложение, което да проследява всички прозорци, в които сте прекарали време през деня? Ще ви трябва само AutoHotKey, основен текстов процесор като Notepad, и около половин час. Хайде да се забием.

Какво е AutoHotKey?

Основната цел на AutoHotKey е автоматизацията на работния плот. Това е скриптов език, с който можете да изпращате натискания на клавиши и движения на мишката до всеки активен прозорец, да създавате бързи клавиши или да променяте натисканията на клавиши. Можете например да го използвате за деактивирайте конкретни клавиши на клавиатурата си.

Това обаче е кратката версия на историята и не е наистина представителна за това, което AutoHotKey (накратко AHK) може да направи. Това е така, защото еволюира от първоначалната си концепция и сега е пълен скриптов език. Можете да мислите за това, което можете да правите с него като „програмиране на Lite“.

instagram viewer

По този начин можете също да използвате AHK за създаване на мини-приложения, точно като това, което сме поставили като наша цел за тази статия. Имайте предвид, че в тази статия ще се потопим точно в AHK, така че може да искате да проверите нашето бързо ръководство за AutoHotKey за начинаещи преди да започнете.

Създаване на свой собствен скрипт за регистриране на прозорци с AutoHotKey

Преди да започнем, трябва да имате инсталиран AHK на вашия компютър, тъй като той ще действа като "парсер" за вашия скрипт. Това е "двигателят", който ще позволи на вашия скрипт "да работи".

Забележка: Можете също да компилирате вашия скрипт, след като е готов, за да го превърнете в действителна изпълнима програма. Това обаче е извън обхвата на тази статия.

Изтеглете AutoHotKey от официалния му сайт и го инсталирайте.

Стартирайте любимия си файлов мениджър и посетете папка, където искате да съхранявате вашия скрипт. След това щракнете с десния бутон върху празно място и изберете Ново > AutoHotKey Script.

След като това е направено, е време да напишете действителния скрипт.

1. Дефинирайте необходимите променливи

Отворете скрипта в любимия си редактор. Можете да използвате нещо толкова просто като Notepad, което идва с Windows, но ние ще използваме Notepad++ за това ръководство. Тъй като Notepad++ е безплатен и по-добре пригоден за целта, си струва да го изпробвате. Не забравяйте също да проверите нашето най-добро ръководство за всичките му клавишни комбинации докато го проверявате.

Имайте предвид, че не трябва да използвате приложения като Word или Google Docs, което може да повлияе на форматирането му. Използвайте текстов или "кодов" редактор.

Скриптът вече ще съдържа някои основни препоръки за съвместимост и производителност. Оставете ги такива, каквито са, и стартирайте своя скрипт под тях.

Започни с:

AppLoggingRate = 10; Интервал от време (в секунди) между заснемането на заглавието на активния прозорец.
Време за заспиване := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Започваме с присвояването на стойността "10" на AppLoggingRate, която ще използваме за изчисляване на времето между заснемането на заглавията на прозорците.

Когато се използва с функцията за заспиване на AHK, 1000 е приблизително равно на секунда. И така, като го умножим с AppLogingRate, ние правим променливата SleepTime "равна на десет секунди".

LogPath е пътят, където искаме да съхраняваме нашите регистрационни файлове. Използваме стойността %A_ScriptDir%, което се превежда като "папката, от която стартирате скрипта". Можете да използвате пълния път до друга папка, ако желаете.

Накрая задаваме LastActiveWindow на празен. Ще използваме това по-късно, за да проверим дали активният прозорец се е променил.

2. Наблюдавайте активния Windows

Тъй като искаме непрекъснато да следим кой прозорец е активен и ако се промени, да регистрираме неговото заглавие и час, ще трябва да използваме „цикл“.

Както се казва в името му, цикълът работи непрекъснато, повтаряйки една и съща функция (и). Благодарение на ясния синтаксис на AHK, ние вярваме, че следният "код" е сравнително разбираем:

Примка
{
Спи %SleepTime%
Msgbox, работи!
}

Ние дефинираме цикъл, като просто напишете думата "loop" и след това маркирате началото му с "{" и края с "}". Всичко в редовете между "{" и "}" ще работи постоянно, докато не излезете от скрипта.

Започваме цикъла, като чакаме (Sleep) за период от време, равен на променливата SleepTime. Зададохме го като променлива в предишната глава, за да направим контролирането на времето по-лесно. Вместо да редактирате самия скрипт, можете да му „кажете“ чрез тази променлива колко секунди трябва да продължи всеки цикъл.

И накрая, използваме поле за съобщения, за да тестваме нашия скрипт. Опитайте да го запишете и стартирате (щракнете двукратно върху неговия файл). Ще видите поле за съобщение, в което се посочва „Това работи!“ след десет секунди.

Щракнете с десния бутон върху иконата на AHK в лентата на Windows и излезте от скрипта, когато имате достатъчно кутии за съобщения. След това се върнете към вашия редактор и заменете реда MsgBox с:

WinGetActiveTitle, ActiveWindow

Това е командата за получаване на заглавието на активния прозорец. Игнорирайте допълнителния ред "StoreActiveWindow", който използвахме, докато пишехме скрипта за тестване.

3. Вземете текущото време и име

Сега идва основната част от логиката на скрипта. Искаме да сравни името на активния прозорец с предишния и ако са различни, „направете нещо“. Това е толкова просто, колкото следното:

Ако ActiveWindow != %LastActiveWindow%
{
}

С горното проверяваме дали текущият ActiveWindow е различен (!=) от стойността, съхранена в променливата LastActiveWindow (която първоначално сме задали на празна). Ако е така, AHK ще изпълни кода между { и }, които засега са празни.

Трябва да следим както датата, така и часа, за да измерим колко време е бил активен прозорец. Ще съхраняваме различни регистрационни файлове за всеки ден, като използваме датата в името им. И ние искаме да регистрираме не само всяка промяна на прозореца, но и кога случи се. За това ще присвоим различни времеви формати на променливите LogTime и LogFilename, с:

FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, yyyy-MMM-dd

Добавете тези редове между къдравите скоби под „Ако ActiveWindow...“, за да накара AHK да ги стартира, когато открие промяна на прозореца.

4. Форматиране на данни

Грабнахме времето в две различно форматирани променливи, както и заглавието на активния прозорец. Има обаче малък проблем: заглавието на прозореца може също да съдържа знаци, които не искаме. Можем да премахнем всички небуквени и цифрови знаци, използвайки поддръжката на AHK за RegEx, с:

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

С това ние "казваме" на AHK да премахне всички знаци от променливата ActiveWindow, които не съвпадат с това, което е в скобите:

  • Малки букви
  • Главни букви
  • Числа

След това присвояваме резултата на променливата LogWindow.

След като всички променливи са зададени и всички ценни данни са взети, ние сме готови да форматираме нашия регистрационен файл и неговото съдържание.

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

По-рано присвоихме текущата дата на променливата LogFilename. По този начин, с първия ред, ние просто заявяваме, че искаме да добавим "_AppLog.md" към датата, за да го използваме като име на файл.

Във втория ред комбинираме променливата LogPath, която дефинирахме в началото като дестинация за нашите регистрационни файлове, с името на файла. Тяхната комбинация е пълният път на дневника, присвоен на променливата LogFile.

Нека присвоим еквивалента на "празен ред, време - име на прозореца, още два празни реда, разделител и още един празен ред, за добра мярка" на променливата FileContent.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • "`n" казват на AHK да въведе нов ред (еквивалентно на еднократно натискане на Enter).
  • Трите тирета ще се появят като разделител, когато се представят в инструмент за преглед, съвместим с намаление.
  • „%LogTime%“ и „%LogWindow%“ са променливите, където сме съхранили името на активния прозорец и времето, когато е бил открит.

5. Актуализирайте файла

Дефинирахме какво искаме да запишем в нашия файл и знаем неговия път и име на файла. Всичко, което остава, е действителното писане, което е толкова лесно, колкото:

FileAppend, %FileContent%, %LogFile%

Това е почти толкова просто, колкото и обикновен английски: ние добавяме всичко в променливата "FileContent" към файла "LogFile".

Функцията "append" ще добави "FileContent" към файла, ако съществува, но също така ще го създаде от нулата, ако не го направи.

Но изчакайте, има една последна настройка: замяна на съдържанието на променливата LastActiveWindow с текущо активния прозорец.

С това скриптът ще може да открие следващия смяна на прозореца.

LastActiveWindow = %ActiveWindow%

И с това последно допълнение вашият прозорец за регистриране на прозорци е готов! Запазете го и го стартирайте. След това проверете файла markdown, който ще се появи в папката на вашия скриптов файл след десет секунди.

Овладейте времето си

Можете да отворите своя регистрационен файл с всеки текстов редактор. Все пак ще изглежда по-красиво, ако го отворите в редактор, съвместим с markdown. На екранната снимка можете да видите нашия дневник в популярния редактор на Typora.

Това е лесен начин да проверите в кои приложения сте прекарали най-много време и имате нужда само от нещо като Notepad, за да го използвате.

Ако искате нещо "повече", винаги можете да "стилизирате" изхода на вашия регистратор, за да създадете CSV файлове вместо това. Това е толкова лесно, колкото да настроите променливата FileContent и разширението на създадения файл. След това можете да импортирате такива файлове в приложения като Excel, Google Calc или дори часовници на трети страни.

Пълен скрипт:

#NoEnv; Препоръчва се за производителност и съвместимост с бъдещи версии на AutoHotkey.
; #Предупреждение; Активирайте предупрежденията, за да помогнете при откриването на често срещани грешки.
SendMode Input; Препоръчва се за нови скриптове поради превъзходната си скорост и надеждност.
SetWorkingDir %A_ScriptDir%; Осигурява последователна начална директория.
; Променливи
;
AppLoggingRate = 10; Интервал от време (в секунди) между заснемането на заглавието на активния прозорец.
Време за заспиване := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Логика
;
Примка
{
Спи %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Ако 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
спи 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Излезте
10 готини скрипта за AutoHotkey (и как да направите свой собствен!)

AutoHotkey ви позволява да създавате персонализирани преки пътища за Windows, макроси и други! Ето някои полезни скриптове за AutoHotkey, за да започнете.

Прочетете Следващото

ДялTweetелектронна поща
Свързани теми
  • Windows
  • Производителност
  • Windows
  • AutoHotkey
  • Управление на времето
  • Трикове за производителност
За автора
Одисей Курафалос (публикувани 12 статии)

Истинският живот на ОК започна на около 10, когато той получи първия си компютър - Commodore 128. Оттогава той топи клавишните капачки, като пише 24/7, опитвайки се да разпространи The Word Of Tech на всеки, който се интересува достатъчно, за да слуша. Или по-скоро четете.

Още от Odysseas Kourafalos

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате