AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

毎日早く仕事を始めて、その日のうちにすべてを解決できるようにします。次に時計を確認すると午前 3 時ですが、仕事はまだ終わっていません。それでは、時間はどこへ行ってしまったのでしょうか?

専用の時間追跡アプリを使用することもできますが、これらは複雑でイライラする可能性があります。代わりに、独自のシンプルな小さなアプリを作成してみてはいかがでしょうか?このアプリケーションは、一日中に使用したすべてのウィンドウを追跡できます。 AutoHotKey とメモ帳のような基本的なワード プロセッサが必要で、所要時間は約 30 分です。始めましょう!

AutoHotKey を使用して独自の Windows ロギング スクリプトを作成する

AHK はスクリプトの「パーサー」として機能するため、開始する前にコンピューターに AHK をインストールする必要があります。これは、スクリプトを「実行」できるようにするツールです。

: 完了後にスクリプトをコンパイルして、実際の実行可能プログラムに変えることもできます。ただし、それはこの記事の範囲を超えています。

公式サイトからAutoHotKeyをダウンロードしてインストールします。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

[新規] > [AutoHotKey スクリプト] を選択します。

お気に入りのファイル マネージャーを起動し、スクリプトを保存するフォルダーにアクセスします。次に、空の場所を右クリックし、 [新規] > [AutoHotKey スクリプト]を選択します。

完了したら、実際のスクリプトを作成します。

1. 必要な変数を特定する

お気に入りのエディタでスクリプトを開きます。 Windows に付属の Notepad などの単純なものを使用できますが、この記事ではこのチュートリアルではNotepad++を使用します 。 Notepad++ は無料であり、この目的に適しているため、試してみるとよいでしょう。

スクリプトの書式設定に影響を与える可能性がある Word や Google ドキュメントなどのアプリケーションは使用しないでください。テキスト エディタまたはコード エディタを使用します。

スクリプトには、互換性とパフォーマンスに関する基本的な推奨情報が含まれています。そのままにして、以下のスクリプトを開始します。

次で始まります:

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

まず、値「10」をAppLoggingRateに割り当てます。これは、ウィンドウ ログの試行間の時間を計算するために使用されます。

AHK のスリープ機能と併用した場合、1000 はほぼ 1 秒に相当します。したがって、これにAppLogingRateを乗算すると、SleepTime 変数が「10 秒に等しい」ことになります。

LogPath は、ログを保存するために使用されるパスです。この例では、値%A_ScriptDir%を使用しています。これは、「スクリプトを実行するディレクトリ」に変換されます。必要に応じて、別のフォルダーへのフルパスを使用できます。

最後に、LastActiveWindowを空に設定し、後でアクティブ ウィンドウが変更されたかどうかを確認するために使用します。

2. アクティブなウィンドウを監視する

どのウィンドウがアクティブであるかを継続的に監視し、ウィンドウが変化した場合はタイトルと時間を記録したいため、「ループ」を使用する必要があります。

名前が示すように、ループは継続的に実行され、同じ機能を繰り返します。 AHK の単純な構文のおかげで、次の「コード」は比較的理解しやすいです。

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

「loop」という単語を入力し、その先頭を「{」、最後を「}」でマークするだけでループを定義できます。「{」「}」の間の行はすべて、スクリプトを終了するまで永久に実行されます。

SleepTime 変数と同じ時間待機 ( Sleep )してループを開始しますこの変数により時間制御が簡単になります。自分でスクリプトを編集する代わりに、この変数を使用して、各ループが何秒続くかを「指示」することができます。

最後に、メッセージ ボックスを使用してスクリプトをテストします。保存して実行してみます (スクリプト ファイルをダブルクリックします)。「It Works!」というメッセージ ボックスが表示されます。(スクリプトは動作しています) 10 秒後。

Windows トレイで AHK のアイコンを右クリックし、十分なメッセージ ボックスが表示されたらスクリプトを終了します。次に、エディターに戻り、MsgBoxの行を次のように置き換えます。

WinGetActiveTitle, ActiveWindow

アクティブなウィンドウのタイトルを取得するコマンドです。例でテスト用のスクリプト作成中に使用した余分な「StoreActiveWindow」行を省略します。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

アクティブなウィンドウのタイトルを取得し、変数に格納します。

3. 現在の時刻と名前を取得する

ここからがスクリプト ロジックの核心です。アクティブなウィンドウの名前と前のウィンドウの名前を比較し、異なる場合は「何かを実行」します。すべては次のように単純です。

If ActiveWindow != %LastActiveWindow%
{
}

上記を考慮して、現在のActiveWindow がLastActiveWindow変数 (最初は空に設定されている)に格納されている値と異なる ( != ) かどうかを確認します。その場合、AHK は、現在空である{}の間のコードを実行します。

アクティブなウィンドウと前のウィンドウのタイトルを比較する機能を設定します

ウィンドウの稼働時間を測定するには、日付と時刻の両方を追跡する必要があります。名前に日付を使用した毎日の異なるログが保持されます。すべての変化だけでなく、変化が発生した時間も記録されます。これを行うには、次のように、 LogTime変数とLogFilename変数に異なる時刻形式を割り当てます。

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

これらの行を"If ActiveWindow..."の中括弧の間に追加して、AHK がウィンドウの変更を検出したときにこれらの行を実行できるようにします。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

現在時刻を取得し、異なる形式の 2 つの変数に代入します。

4. データ形式

ここで、時間とアクティブ ウィンドウのタイトルを 2 つの異なる形式の変数でキャプチャします。ただし、小さな問題があります。ウィンドウのタイトルには不要な文字が含まれる場合もあります。 AHK の RegEx サポートを使用すると、次のようにして、英数字以外の文字をすべて削除できます。

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

これを念頭に置いて、かっこ内の内容と一致しないすべての文字を ActiveWindow 変数から削除するように AHK に「依頼」しましょう。

  • 小文字
  • 大文字
  • 数字

次に、結果をLogWindow 変数に代入します。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

RegEx を使用してアクティブなウィンドウのタイトルをクリーンアップする

すべての変数を設定し、すべての貴重なデータを収集したら、ログ ファイルとその内容をフォーマットする準備が整いました。

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

以前は、現在の日付をLogFilename 変数に割り当てていました。そのため、1行目は日付に「_AppLog.md」を付けてファイル名とします。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

ログファイル名を設定します

2 行目では、ファイル名とともにログ ファイルの宛先として最初に定義された変数LogPathを結合します。それらの組み合わせがログ ファイルの絶対パス名となり、変数LogFile に割り当てられます。

「空行、時間 - ウィンドウの名前、さらに 2 つの空行、区切り線、および念のためもう 1 つの空行」と同等の値をFileContent 変数に割り当てましょう

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • 文字「n」は、AHK に新しい行を入力するように指示します ( Enter キーを1 回押すのと同じです)。
  • クロスダウン互換のビューアで表示すると、3 つのダッシュが区切り文字として表示されます。
  • 「% LogTime%」と「% LogWindow%」は、アクティブなウィンドウの名前とそれが検出された時間を格納する変数です。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

ログファイルの内容を決定します

5. ファイルを更新する

ファイルに書き込む内容、およびそのパスとファイル名を定義しました。残るのは、次のような実際の単純なテキストだけです。

FileAppend, %FileContent%, %LogFile%

「FileContent」変数内のすべてを「LogFile」ファイルに追加します

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

AHK の追加機能を使用してログ ファイルを更新するか、最初からログ ファイルを作成します

「append」関数は、ファイルが存在する場合は「FileContent」をファイルに追加しますが、ファイルが存在しない場合は最初から作成します。

最後の調整が 1 つあります。LastActiveWindow変数の内容を現在アクティブなウィンドウに置き換えます。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

今後のテストのために、現在アクティブなウィンドウのタイトルを LastActiveWindow 変数に挿入します

これを行うには、スクリプトが次のウィンドウの変更を検出できる必要があります。

LastActiveWindow = %ActiveWindow%

最後の追加により、Windows ロガーの準備が整いました。スクリプトを保存して実行します。次に、マークダウン ファイルを確認します。このファイルは 10 秒後にスクリプト ファイル フォルダーに表示されます。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

Windows ログ ファイルはスクリプトと同じディレクトリに作成されます

自分の時間をコントロールしましょう

ログ ファイルは任意のテキスト エディタで開くことができます。ただし、Markdown 互換のエディターで開いた方が見栄えは良くなります。スクリーンショットでは、人気のある Typora エディターのログを確認できます。

AutoHotKey を使用して Windows 上で時間追跡アプリケーションを作成する方法

スクリプトによって生成されたマークダウン ファイルは 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でデフォルトの電源プラン(バランス、高パフォーマンス、省電力)を復元する方法を詳しく解説します。

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

仮想化を有効にするには、まず BIOS に移動し、BIOS 設定内から仮想化を有効にする必要があります。仮想化を使用することで、BlueStacks 5 のパフォーマンスが大幅に向上します。

WiFi接続に接続する際のドライバーの切断を修正

WiFi接続に接続する際のドライバーの切断を修正

WiFi 接続に接続するときにドライバーが切断されるエラーを修正する方法を解説します。

Windows での DIR コマンドの使用方法

Windows での DIR コマンドの使用方法

DIR コマンドは、特定のフォルダーに含まれるすべてのファイルとサブフォルダーを一覧表示する強力なコマンド プロンプト コマンドです。 Windows での DIR コマンドの使用方法を詳しく見てみましょう。

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアなしで Windows 10 アプリをバックアップし、データを保護する方法を説明します。

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows のローカル グループ ポリシー エディターを使用して、通知履歴の削除やアカウントロックの設定を行う方法を説明します。

最高の IP 監視ツール 10 選

最高の IP 監視ツール 10 選

重要なリソースを簡単に監視及び管理できる<strong>IP監視</strong>ソフトウェアがあります。これらのツールは、ネットワーク、インターフェイス、アプリケーションのトラフィックをシームレスに確認、分析、管理します。

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt は、データの暗号化に特化した優れたソフトウェアであり、特にデータ セキュリティに優れています。

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

システムフォントのサイズを変更する方法は、Windows 10のユーザーにとって非常に便利です。

Windows 10で機内モードをオフにできないエラーを修正する方法

Windows 10で機内モードをオフにできないエラーを修正する方法

最近、Windows 10にアップデートした後、機内モードをオフにできない問題について多くのユーザーから苦情が寄せられています。この記事では、Windows 10で機内モードをオフにできない問題を解決する方法を説明します。