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 では印刷ログを有効にする必要があります。その方法は次のとおりです。

コンピューターの「災害」トップ 10 とその対処方法

コンピューターの「災害」トップ 10 とその対処方法

コンピューターを使用すると、ハードドライブが故障した場合にすべてのデータが失われるなどのトラブルや問題に対処する必要があります。ここでは、コンピュータに関する一般的な 10 の問題とその解決方法を紹介します。

HitmanPro.Kickstart を使用してウイルスに感染したコンピュータを起動する手順

HitmanPro.Kickstart を使用してウイルスに感染したコンピュータを起動する手順

HitmanPro.Kickstart を使用すると、USB フラッシュ ドライブからコンピュータを起動してランサムウェアを削除できます。通常の方法ではコンピュータを起動できないため、Surfright は一般ユーザーにとって使いやすい HitmanPro.Kickstart を開発しました。 HitmanPro.Kickstart USB フラッシュ ドライブを使用してシステムを起動するだけで、すぐに使用できます。

この PC からネットワーク ドライブの割り当てオプションとネットワーク ドライブの切断オプションを削除する方法

この PC からネットワーク ドライブの割り当てオプションとネットワーク ドライブの切断オプションを削除する方法

この記事は、Windows 10 の [この PC] フォルダーから [ネットワーク ドライブの割り当て] オプションと [ネットワーク ドライブの切断] オプションを削除するのに役立ちます。

仮想専用サーバー (VPS) とは何ですか?

仮想専用サーバー (VPS) とは何ですか?

仮想プライベート サーバー (VPS) は、複数のオペレーティング システムを実行している物理コンピューターにインストールされているにもかかわらず、専用/プライベート サーバーのように感じられる仮想サーバーです。

インターネット速度を最適化するために最速の DNS を見つける方法

インターネット速度を最適化するために最速の DNS を見つける方法

インターネット速度を最適化するにはどの DNS オプションが最適ですか? DNS が競合他社よりも優れているかどうかを確認するにはどうすればよいですか?この記事を読んで、最速の DNS を見つけてインターネット速度を最適化してください。

ファイルサーバーとは何ですか?

ファイルサーバーとは何ですか?

ファイル サーバーは、コンピュータ ネットワーク内の中央サーバー インスタンスであり、接続されたクライアントがサーバーのストレージ容量にアクセスできるようにします。この用語には、そのようなサーバーを展開するために必要なハードウェアとソフトウェアの両方が含まれます。

Windows 10 署名の特別な点は何ですか?

Windows 10 署名の特別な点は何ですか?

ほとんどのコンピューター ユーザーは、Windows 10 S、Professional、および Enterprise エディションに精通しています。では、Windows 10 の署名とは何でしょうか?以下の記事で詳しく見ていきましょう!

ネットワークTAPとは何ですか?システムのセキュリティを確保するのにどのように役立ちますか?

ネットワークTAPとは何ですか?システムのセキュリティを確保するのにどのように役立ちますか?

ネットワーク TAP は、ネットワーク内、特に接続された 2 つのネットワーク デバイス (スイッチ、ルーター、ファイアウォールなど) の間に配置して、ネットワーク トラフィックを監視するハードウェア デバイスです。

FormBook マルウェアとは何ですか?削除方法は?

FormBook マルウェアとは何ですか?削除方法は?

機密データを管理している場合は、FormBook マルウェアについて懸念する必要があります。この情報窃取マルウェアがネットワークや PC に侵入すると、企業に取り返しのつかない損害を与える可能性があります。