如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

你每天早點開始工作,這樣你就能在白天解決所有的事情。然後你看了看時鐘,已經凌晨 3 點了,但你的工作還沒完成。那麼時間都去哪了呢?

您可以使用專用的時間追蹤應用程序,但這些應用程式可能會很複雜且令人沮喪。相反,為什麼不創建自己的簡單小應用程式呢?該應用程式可以追蹤您白天使用的所有窗戶。您只需要 AutoHotKey、一個像記事本這樣的基本文字處理程序,以及大約半小時。讓我們開始吧!

使用 AutoHotKey 建立您自己的 Windows 日誌記錄腳本

在開始之前,您應該在電腦上安裝 AHK,因為它將充當腳本的「解析器」。它是允許您的腳本“運行”的工具。

注意:您也可以在完成後編譯腳本,將其變成真正的可執行程式。然而,這超出了本文的範圍。

從官方網站下載 AutoHotKey並安裝。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

選擇新建 > AutoHotKey 腳本

啟動您最喜歡的檔案管理器並存取您要儲存腳本的資料夾。然後,右鍵單擊空白位置並選擇新建 > AutoHotKey 腳本

完成後,就可以編寫實際的腳本了。

1. 確定必要的變數

在您最喜歡的編輯器中開啟腳本。您可以使用 Windows 隨附的記事本等簡單工具,但本文將在本教學中使用Notepad++  。 Notepad++ 是免費的,更適合此目的,因此您應該嘗試一下。

請注意,您不應使用任何應用程序,例如 Word 或 Google Docs,這可能會影響腳本的格式。使用文字或程式碼編輯器。

該腳本將包含一些有關相容性和效能的基本推薦資訊。讓它們保持原樣並啟動下面的腳本。

以。。開始:

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

首先將值「10」指派給AppLoggingRate,該值將用於計算視窗日誌記錄嘗試之間的時間。

當與 AHK 的 Sleep 函數一起使用時,1000 大約等於一秒。因此,透過將其乘以AppLogingRate,您將使 SleepTime 變數「等於 10 秒」。

LogPath是用於儲存日誌的路徑。這個範例使用值%A_ScriptDir%,它轉換為「運行腳本的目錄」。如果需要,您可以使用另一個資料夾的完整路徑。

最後,將LastActiveWindow設為空並稍後使用來檢查活動視窗是否已變更。

2. 監控活動視窗

由於我們想要持續監視哪個視窗處於活動狀態,如果它發生變化,則記錄標題和時間,因此我們必須使用「循環」。

顧名思義,循環連續運行,重複相同的函數。由於AHK的語法簡單,下面的「程式碼」相對容易理解:

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

只需鍵入單字“loop”,然後用“{”標記其開頭並用“}”結尾即可定義循環。「{」「}」之間的行中的所有內容都將永遠運行,直到您退出腳本。

透過等待 ( Sleep ) 等於 SleepTime 變數的時間來啟動迴圈這個變數使時間控制更簡單。您可以透過此變數「告訴」它每個循環應持續多少秒,而不是自己編輯腳本。

最後,使用Message Box測試腳本。嘗試儲存並運行它(雙擊腳本檔案)。您將看到一個訊息框,上面寫著“It Works!”(腳本工作)10 秒後。

當您看到足夠的消息框時,請右鍵單擊 Windows 托盤中的 AHK 圖示並退出腳本。然後返回編輯器並將MsgBox行替換為:

WinGetActiveTitle, ActiveWindow

這是獲取活動視窗標題的命令。省略範例在編寫測試腳本時使用的額外「StoreActiveWindow」行。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

取得活動視窗的標題並將其儲存在變數中

3. 取得目前時間和名稱

現在是腳本邏輯的核心。將活動視窗的名稱與前一個視窗的名稱進行比較,如果不同,則「執行某些操作」。一切就這麼簡單:

If ActiveWindow != %LastActiveWindow%
{
}

鑑於上述情況,檢查目前ActiveWindow是否與LastActiveWindow變數中儲存的值(最初設定為空)不同 ( != )。如果是這樣,AHK 將執行{}之間的程式碼,該程式碼目前為空。

設定比較目前視窗和前一個視窗標題的功能

有必要追蹤日期和時間來衡量視窗的正常運作時間。每天都有不同的日誌,名稱中使用日期的日誌將會保留。不僅每次更改,而且發生的時間也會被記錄。為此,請為LogTimeLogFilename變數指派不同的時間格式,方法是:

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

在"If ActiveWindow..."中的大括號之間新增這些行,以便 AHK 在偵測到視窗變更時執行它們。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

取得當前時間並將其指派給兩個不同格式的變量

4. 資料格式

現在,我們以兩個不同格式的變數來擷取時間以及活動視窗的標題。但是,有一個小問題:視窗的標題也可能包含不需要的字元。可以使用 AHK 對 RegEx 的支援刪除所有非字母數字字符,方法如下:

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

考慮到這一點,讓我們「要求」AHK 從 ActiveWindow 變數中刪除所有與括號中的內容不符的字元:

  • 小寫
  • 大寫字母
  • 數位

然後,將結果指派給LogWindow 變數。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

使用正規表示式清理活動視窗的標題

設定好所有變數並收集所有有價值的資料後,您現在就可以格式化日誌檔案及其內容了。

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

之前,我們將目前日期指派給LogFilename 變數。因此,對於第一行,將“_AppLog.md”新增至日期以將其用作檔案名稱。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

設定日誌檔名

在第二行中,將變數LogPath與檔案名稱結合起來,該變數在開頭定義為日誌檔案的目標。它們的組合是指派給變數LogFile 的日誌檔案的完整路徑名。

讓我們為 FileContent 變數分配「空白行、時間 - 視窗名稱、另外兩個空白行、一個分隔符號和另一個空白行,以便更好地衡量」的等效

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • 字母「n」告訴 AHK 輸入新行(相當於按一次Enter鍵)。
  • 當顯示在向下相容的檢視器中時,三個破折號將顯示為分隔符號。
  • “% LogTime%”和“% LogWindow%”是儲存活動視窗名稱及其偵測時間的變數。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

確定日誌檔案的內容

5. 更新文件

您已經定義了我們要寫入檔案的內容及其路徑和檔案名稱。剩下的就是實際的、簡單的文本,如下所示:

FileAppend, %FileContent%, %LogFile%

「FileContent」變數中的所有內容附加到「LogFile」檔案中。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

使用 AHK 的 Append 功能更新日誌檔案或從頭開始建立一個

如果檔案存在,「append」函數會將「FileContent」加入到檔案中,但如果檔案不存在,也會從頭開始建立它。

最後還有一項調整:將LastActiveWindow變數的內容替換為目前活動視窗。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

將目前活動視窗的標題插入 LastActiveWindow 變數以供日後測試

為此,腳本應該能夠檢測下一個視窗變更。

LastActiveWindow = %ActiveWindow%

最後新增後,Windows 記錄器就準備好了!儲存腳本並運行它。然後,查看markdown文件,10秒後該文件就會出現在腳本資料夾中。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

Windows 日誌檔案會建立在與腳本相同的目錄中

掌控自己的時間

您可以使用任何文字編輯器開啟日誌檔案。但是,如果您在與 Markdown 相容的編輯器中開啟它,它看起來會更好。在螢幕截圖中,您可以看到流行的 Typora 編輯器中的日誌。

如何使用 AutoHotKey 在 Windows 上建立時間追蹤應用程式

腳本產生的markdown檔案載入到Typora中

這是一種檢查您最常使用哪些應用程式的簡單方法,並且只需要使用記事本等工具。

如果您想要「更特別」的東西,您始終可以「設計」記錄器的輸出以建立 CSV 檔案。只需調整FileContent變數和建立的檔案的副檔名即可。然後,您可以將此類文件匯入 Excel、Google Calc 等應用程序,甚至第三方時間追蹤器。

完整腳本

#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

如何在 Windows 10 上檢查列印文件歷史記錄

如何在 Windows 10 上檢查列印文件歷史記錄

檢查印表機歷史記錄​​以查看已列印的內容有點難以追蹤。因為看墨水量,你無法知道印了多少文件。您需要在 Windows 10 中啟用列印日誌,具體操作方法如下。

十大計算機“災難”及其處理方法

十大計算機“災難”及其處理方法

使用電腦意味著要處理麻煩和問題,例如如果硬碟發生故障,則會遺失所有資料。以下是 10 個常見的電腦問題以及解決方法。

使用 HitmanPro.Kickstart 啟動感染病毒的電腦的說明

使用 HitmanPro.Kickstart 啟動感染病毒的電腦的說明

HitmanPro.Kickstart 可讓您從 USB 隨身碟啟動電腦以移除勒索軟體。由於您無法以正常方式啟動計算機,Surfright 開發了 HitmanPro.Kickstart,對於一般使用者來說很容易使用。您所需要做的就是在 HitmanPro.Kickstart USB 隨身碟的幫助下啟動您的系統,然後就可以使用了。

如何從此電腦中刪除「映射網路磁碟機」和「斷開網路磁碟機」選項

如何從此電腦中刪除「映射網路磁碟機」和「斷開網路磁碟機」選項

本文可協助您從 Windows 10 上的「此電腦」資料夾中刪除「映射網路磁碟機」和「中斷網路磁碟機」選項。

什麼是虛擬專用伺服器(VPS)?

什麼是虛擬專用伺服器(VPS)?

虛擬專用伺服器 (VPS) 是一種感覺像是專用/專用伺服器的虛擬伺服器,儘管它安裝在運行多個作業系統的實體電腦上。

如何找到最快的 DNS 來優化網路速度

如何找到最快的 DNS 來優化網路速度

哪種 DNS 選項最適合優化網路速度?如何知道 DNS 是否優於競爭對手?閱讀本文以找到最快的 DNS 並優化您的網路速度。

什麼是文件伺服器?

什麼是文件伺服器?

文件伺服器是電腦網路中的中央伺服器實例,允許連接的客戶端存取伺服器的儲存容量。該術語包括部署此類伺服器所需的硬體和軟體。

Windows 10 簽章有何特別之處?

Windows 10 簽章有何特別之處?

大多數電腦使用者都熟悉 Windows 10 S、專業版和企業版。那什麼是Windows 10簽名呢?讓我們透過下面的文章來了解一下吧!

什麼是網路 TAP?它如何幫助保護系統?

什麼是網路 TAP?它如何幫助保護系統?

網路 TAP 是放置在網路中的硬體設備,特別是放置在兩個連接的網路設備(例如交換器、路由器或防火牆)之間以監視網路流量的硬體設備。

什麼是 Acunetix?關於 Acunetix 網站漏洞掃描工具您需要了解的信息

什麼是 Acunetix?關於 Acunetix 網站漏洞掃描工具您需要了解的信息

商業市場上有許多可用的工具,Acunetix 就是其中之一。那什麼是 Acunetix?它能為您做些什麼?以下是您需要了解的有關此工具的資訊。