blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

2ちゃんねるを JaneXeno で閲覧した時間を表示してみた

末尾に記すスクリプトを実行すると、以下のようなバルーンをタスクトレイの領域に表示する。2ちゃんねるにどれほど入り浸っているかを確認してみると、面白いだろう。

スクリプトの導入方法は以下のとおりだ。

  1. AutoHotkey_Lの "Get It" から "Installer" を取得する
  2. インストールする設定で、"Choose Version" で "Unicode (rocommended for new installations/scripts)"を選択する(つまり、Unicode 版をインストールする)
  3. 末尾に記すスクリプトを UTF-8 (BOM 付き)で保存する
  4. そのスクリプトを実行する

初期設定では,JaneXeno でなにかしらの板を見ているときには、バルーンに情報を表示し続けるようにしている。明示的に操作しないかぎり、情報を表示しないよう設定することもできる。always_show_info := 1 を always_show_info := 0 と書き換えると、タスクトレイの「情報を表示」を選択したときにのみ、情報を表示する。

#singleinstance
#persistent

;;; 監視するタイトル
app_name := "JaneXeno"
;;; 2ちゃんねるの閲覧情報を常に表示するか
always_show_info := 1



board_sec := Object()
total_sec := 0

menu, tray, Tip, 2ちゃんねるの閲覧時間を計測中

menu, tray, NoStandard
menu, tray, add, 情報を表示, ShowInfo
menu, tray, add
menu, tray, add, 終了, ExitApp


loop
{
    Loop,Parse, app_name, |
    {
        IfWinActive, %A_LoopField%
        {
            WinGetTitle, Title, A
            RegExMatch(Title, " 【(.+)】", $)
            title_of_a_board := $1

            board_sec[title_of_a_board] := ( board_sec[title_of_a_board] ) ? board_sec[title_of_a_board] + 1
                                        : 1

            each_sec := board_sec[title_of_a_board]
            total_sec += 1

            if ( always_show_info )
                ShowInfo(total_sec)
        }
    }

    Sleep,% 1000
}

return

ShowInfo:
    ShowInfo(total_sec, 1)
return

ExitApp:
    ExitApp
return



ShowInfo(total_sec, place=0)
{
    global board_sec

    enum := board_sec._NewEnum()
    While enum[k, v]
        t .= k "`t" sec_to_hms( v ) "`n"

    total_time := sec_to_hms( total_sec )

    if ( place = 0 )
        TrayTip, 2ちゃんねるの閲覧時間(%A_LoopField% 版), %t%`n合計`t%total_time%, , 1
    else
        MsgBox, ,2ちゃんねるの閲覧時間(%A_LoopField% 版), %t%`n合計`t%total_time%

    return
}



;;; 秒を日時に変換する
sec_to_hms( sec )
{
    min := sec // 60

    if ( min )
    {
        sec := Mod(sec, 60)
        hour := min // 60

        if ( hour )
        {
            min := Mod(min, 60)
            day := hour // 24

            if ( day )
                hour := Mod(hour, 24)
        }
    }

    t := ""

    if ( day )
        t .= day . " 日 "

    if ( hour )
        t .= t . hour . " 時 "

    if ( min )
        t .= min . " 分 "

    t .= sec . " 秒"

    return t
}