13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python の win32gui を使ってアクティブウインドウの記録を取るスクリプトを作ってみた

Last updated at Posted at 2020-02-16

ソフトウェアの開発をしている会社だと、どの作業を何分やったかを日報に入れろと言われることが多いのではないでしょうか?
そんな事言われても忙しいときは記録取るのが難しいので、「アクティブウインドウの記録を取ればだいたい何をしていたのかわかるのでは?」という前提でそれをするためのスクリプトを作ってみました。使えると嬉しい人が他にもいそうなので、公開しておきます。
タイトルバーに編集中のファイル名が出る種類のエディタをお使いのプログラマでしたらこのスクリプトでだいたい何をしていたか後で振り返ることができます。

出来上がったスクリプト

以下にあります:
https://github.com/aikige/homeBinWin/blob/master/dumpForegroundWindow.py

基本的なコンセプト

  1. pywin32 に含まれている win32gui.GetForegroundWindow および、win32gui.GetWindowText を使って現在フォアグラウンドで動作しているウインドウのタイトルを取得します。
  2. 取得したものをタイムスタンプ付きでダンプします。
  3. 上記の処理を定期実行(間隔は引数で変更可能)します。
  4. ログは日付ごとのファイルに記録されます。とりあえず現在はファイルと標準出力の両方にログが出力されるようにしてあります。

スクリプトを動かすための前準備

pywin32がまだ入っていない場合はインストールしてください。

pip install pywin32

動作確認した環境

Python 3.8.1
pywin32 Version 227

※win32guiは、pywin32に含まれているようです。

参考にしたもの

関連する記事

余談

ダンプされたファイルを Vim などで開くとデコードエラーが出ていたので、原因を解析しました。

Windows 10 の場合、タイトルバーは UTF-8 の範囲の文字が利用されているようですが、UTF-8 には CP932 の範囲外の文字があるため、Vim の内部エンコーディングを CP932 にすると、それが原因でデコードエラーになる事がわかりました。

対策として、取得したタイトルから、CP932 の範囲外の文字を削除する処理をスクリプトに追加しました。

動作確認に使ったVim: VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 13:30:17)

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?