Anda memulakan kerja anda setiap hari lebih awal supaya anda boleh menyelesaikan segala-galanya pada siang hari. Kemudian anda menyemak jam dan sudah pukul 3 pagi tetapi kerja anda masih belum selesai. Jadi ke mana perginya masa?
Anda boleh menggunakan apl penjejakan masa khusus, tetapi ini boleh menjadi rumit dan mengecewakan. Sebaliknya, mengapa tidak mencipta aplikasi kecil mudah anda sendiri? Aplikasi ini boleh menjejaki semua tetingkap yang telah anda gunakan pada siang hari. Anda hanya memerlukan AutoHotKey, pemproses perkataan asas seperti Notepad, dan kira-kira setengah jam. Mari kita mulakan!
Cipta skrip pengelogan tingkap anda sendiri dengan AutoHotKey
Sebelum memulakan, anda harus memasang AHK pada komputer anda kerana ia akan bertindak sebagai "penghurai" untuk skrip. Ia adalah alat yang membolehkan skrip anda "berjalan".
Nota : Anda juga boleh menyusun skrip selepas selesai untuk mengubahnya menjadi program boleh laku sebenar. Walau bagaimanapun, itu adalah di luar skop artikel ini.
Muat turun AutoHotKey dari tapak web rasmi dan pasangkannya.

Pilih Baharu > Skrip AutoHotKey
Nyalakan pengurus fail kegemaran anda dan akses folder tempat anda ingin menyimpan skrip. Kemudian, klik kanan pada lokasi kosong dan pilih Baharu > Skrip AutoHotKey .
Setelah selesai, tiba masanya untuk menulis skrip sebenar.
1. Kenal pasti pembolehubah yang diperlukan
Buka skrip dalam editor kegemaran anda. Anda boleh menggunakan sesuatu yang mudah seperti Notepad yang disertakan dengan Windows, tetapi artikel itu akan menggunakan Notepad++ untuk tutorial ini. Notepad++ adalah percuma dan lebih sesuai untuk tujuan ini, jadi anda harus mencubanya.
Ambil perhatian bahawa anda tidak boleh menggunakan sebarang aplikasi seperti Word atau Google Docs, yang boleh menjejaskan pemformatan skrip. Gunakan editor teks atau kod.
Skrip akan mengandungi beberapa maklumat asas yang disyorkan tentang keserasian dan prestasi. Biarkan mereka seadanya dan mulakan skrip di bawah.
Bermula dengan:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Mulakan dengan memberikan nilai "10" kepada AppLoggingRate , yang akan digunakan untuk mengira masa antara percubaan pengelogan tetingkap.
Apabila digunakan dengan fungsi Tidur AHK, 1000 adalah lebih kurang sama dengan satu saat. Jadi dengan mendarabkannya dengan AppLogingRate anda akan menjadikan pembolehubah SleepTime "sama dengan 10 saat".
LogPath ialah laluan yang digunakan untuk menyimpan log. Contohnya menggunakan nilai %A_ScriptDir% , yang diterjemahkan kepada "direktori dari mana anda menjalankan skrip". Anda boleh menggunakan laluan penuh ke folder lain jika anda mahu.
Akhir sekali, tetapkan LastActiveWindow untuk mengosongkan dan gunakan kemudian untuk menyemak sama ada tetingkap aktif telah berubah.
2. Pantau tetingkap aktif
Memandangkan kami ingin memantau secara berterusan tetingkap mana yang aktif dan jika ia berubah, rekod tajuk dan masa, kami perlu menggunakan "gelung".
Seperti namanya, gelung berjalan secara berterusan, mengulangi fungsi yang sama. Terima kasih kepada sintaks ringkas AHK, "kod" berikut agak mudah difahami:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Tentukan gelung dengan hanya menaip perkataan "gelung" dan kemudian menandakan permulaannya dengan "{" dan berakhir dengan "}". Segala-galanya dalam baris antara "{" dan "}" akan berjalan selama-lamanya sehingga anda keluar dari skrip.
Mulakan gelung dengan menunggu ( Tidur ) untuk jumlah masa yang sama dengan pembolehubah SleepTime. Pembolehubah ini menjadikan kawalan masa lebih mudah. Daripada mengedit skrip sendiri, anda boleh "memberitahu"nya, melalui pembolehubah ini, berapa saat setiap gelung harus bertahan.
Akhir sekali, gunakan Kotak Mesej untuk menguji skrip. Cuba simpan dan jalankan (klik dua kali pada fail skrip). Anda akan melihat kotak mesej yang mengatakan "Ia Berfungsi!" (skrip berfungsi) selepas 10 saat.
Klik kanan ikon AHK dalam dulang Windows dan keluar dari skrip apabila anda mempunyai kotak mesej yang mencukupi. Kemudian kembali ke editor dan gantikan baris MsgBox dengan:
WinGetActiveTitle, ActiveWindow
Ini adalah arahan untuk mendapatkan tajuk tetingkap aktif. Tinggalkan baris "StoreActiveWindow" tambahan yang contoh digunakan semasa membuat skrip untuk ujian.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Dapatkan tajuk tetingkap aktif dan simpan dalam pembolehubah
3. Dapatkan masa dan nama semasa
Kini datang teras logik skrip. Bandingkan nama tetingkap aktif dengan yang sebelumnya, dan jika mereka berbeza, "buat sesuatu". Semuanya semudah ini:
If ActiveWindow != %LastActiveWindow%
{
}
Memandangkan perkara di atas, semak sama ada ActiveWindow semasa adalah berbeza ( != ) daripada nilai yang disimpan dalam pembolehubah LastActiveWindow (yang pada mulanya ditetapkan kepada kosong). Jika ya, AHK akan melaksanakan kod antara { dan } , yang pada masa ini kosong.
Tetapkan fungsi untuk membandingkan tajuk tetingkap aktif dan tetingkap sebelumnya
Ia adalah perlu untuk mengesan kedua-dua tarikh dan masa untuk mengukur masa hidup tetingkap. Log yang berbeza untuk setiap hari, menggunakan tarikh dalam nama mereka akan dikekalkan. Bukan sahaja setiap perubahan tetapi masa ia berlaku juga akan direkodkan. Untuk berbuat demikian, tetapkan format masa yang berbeza kepada pembolehubah LogTime dan LogFilename , dengan:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
Tambahkan garisan tersebut antara pendakap kerinting dalam "If ActiveWindow..." , supaya AHK menjalankannya apabila ia mengesan perubahan tetingkap.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Dapatkan masa semasa dan tetapkan dalam dua pembolehubah format yang berbeza
4. Format data
Kami kini menangkap masa dalam dua pembolehubah berformat berbeza, serta tajuk tetingkap aktif. Walau bagaimanapun, terdapat masalah kecil: Tajuk tetingkap juga boleh mengandungi aksara yang tidak diingini. Anda boleh mengalih keluar semua aksara bukan abjad angka menggunakan sokongan AHK untuk RegEx, dengan:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
Dengan mengambil kira perkara ini, mari kita "minta" AHK untuk mengalih keluar semua aksara daripada pembolehubah ActiveWindow yang tidak sepadan dengan apa yang ada dalam kurungan:
- Huruf kecil
- Huruf besar
- Nombor
Kemudian, tetapkan hasilnya kepada pembolehubah LogWindow.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Bersihkan tajuk tetingkap aktif dengan RegEx
Dengan semua pembolehubah ditetapkan dan semua data berharga dikumpul, anda kini bersedia untuk memformat fail log dan kandungannya.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Sebelum ini, kami menetapkan tarikh semasa kepada pembolehubah LogFilename. Oleh itu, untuk baris pertama, tambah "_AppLog.md" pada tarikh untuk menggunakannya sebagai nama fail.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Tetapkan nama fail log
Dalam baris kedua, gabungkan pembolehubah LogPath , yang ditakrifkan pada mulanya sebagai destinasi untuk fail log bersama-sama dengan nama fail. Gabungan mereka ialah nama laluan penuh fail log, yang diberikan kepada LogFile pembolehubah.
Mari kita tetapkan nilai setara "baris kosong, Masa - Nama Tetingkap, dua lagi baris kosong, pembahagi dan satu lagi baris kosong, untuk ukuran yang baik" kepada pembolehubah FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Huruf "n" memberitahu AHK untuk memasukkan baris baharu (bersamaan dengan menekan Enter sekali).
- Tiga sengkang akan muncul sebagai pemisah apabila dipaparkan dalam pemapar serasi silang ke bawah.
- "% LogTime%" dan "% LogWindow%" ialah pembolehubah yang menyimpan nama tetingkap aktif dan masa ia dikesan.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Menentukan kandungan fail log
5. Kemas kini fail
Anda telah menentukan perkara yang ingin kami tulis pada fail tersebut, serta laluan dan nama failnya. Yang tinggal hanyalah teks sebenar yang ringkas seperti berikut:
FileAppend, %FileContent%, %LogFile%
Tambahkan semua dalam pembolehubah "FileContent" pada fail "LogFile".
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Gunakan fungsi Append AHK untuk mengemas kini fail log atau menciptanya dari awal
Fungsi "tambah" akan menambah "Kandungan Fail" pada fail jika ia wujud, tetapi juga akan menciptanya dari awal jika fail itu tidak wujud.
Terdapat satu tweak terakhir: gantikan kandungan pembolehubah LastActiveWindow dengan tetingkap yang sedang aktif.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Memasukkan tajuk tetingkap aktif semasa ke dalam pembolehubah LastActiveWindow untuk ujian masa hadapan
Untuk melakukan ini, skrip harus dapat mengesan perubahan tetingkap seterusnya.
LastActiveWindow = %ActiveWindow%
Dan dengan penambahan terakhir itu, windows logger sudah sedia! Simpan skrip dan jalankannya. Kemudian, semak fail markdown, fail ini akan muncul dalam folder fail skrip selepas 10 saat.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Fail log windows dicipta dalam direktori yang sama dengan skrip
Kawal masa anda sendiri
Anda boleh membuka fail log dengan mana-mana editor teks. Walau bagaimanapun, ia akan kelihatan lebih baik jika anda membukanya dalam editor yang serasi penurunan harga. Dalam tangkapan skrin anda boleh melihat log dalam editor Typora yang popular.
![Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey Cara membuat aplikasi penjejakan masa pada Windows dengan AutoHotKey]()
Fail penurunan harga yang dijana oleh skrip dimuatkan dalam Typora
Ini cara mudah untuk menyemak apl yang paling kerap anda gunakan dan hanya memerlukan alat seperti Notepad untuk digunakan.
Jika anda mahukan sesuatu yang "lebih istimewa", anda sentiasa boleh "menggayakan" output logger untuk mencipta fail CSV. Ia semudah melaraskan pembolehubah FileContent dan lanjutan fail yang dibuat. Anda kemudian boleh mengimport fail tersebut ke dalam aplikasi seperti Excel, Google Calc, atau bahkan penjejak masa pihak ketiga.
Skrip lengkap
#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