里々でenumwindows.exeを使う方法 enumwindows.exe配布元:http://nh.pv.to/test/read.cgi/unyu/1097819382/95 タスクバー上のウィンドウ名を列挙するSAORI。 タスクバーに表示されないウィンドウ名は取得されません。 exeなので使う時最初の一回だけちょっと重いです。 これは特定のウィンドウ名やウィンドウの数に対し特別な反応をさせる、起動中ウィンドウの一覧を出すサンプルです。 一部ssu.dllを使用しています。 ---------------------------------------------------- ○ 前準備 (1)saoriフォルダにenumwindows.exeとenumwindows.cppをいれる (2)satori_conf.txtの@SAORIの下に「enumwindows,saori/enumwindows.exe」の一行を追加 #================================================== *起動 $SAORI引数の計算 自動 :起動しました。 *終了 $起動中ウィンドウ群 $起動中ウィンドウの数 :終了します。 *0つつかれ :メニューです。 _起動中ウィンドウに反応 _起動中ウィンドウ一覧 _ランダムトーク #-------------------------------------------------- #(sprintf,%c,1)を短縮 #-------------------------------------------------- # (sprintf,%c,1)は(enumwindows)で列挙されるウィンドウ名の区切りに使われている字です # replace.txtで使わなそうな記号に置き換えてもいいと思います #-------------------------------------------------- @b1 (sprintf,%c,1) #-------------------------------------------------- # 特定のウィンドウ名に反応・起動中ウィンドウの数に反応 #-------------------------------------------------- # たまに誤爆します。例えば「メモ帳」という文字が入ってたタイトルのフォルダでもメモ帳扱いされます。フォルダかどうか判別するのは多分無理です。 #-------------------------------------------------- # splitを使う時は「$SAORI引数の計算 無効」を入れた方が良いです。 #(ウィンドウ名に「-」や「/」等が入っているとウィンドウの数が間違った数になる時があるため) #-------------------------------------------------- #「*ウィンドウ反応」の右には必ずタブと条件式を入れてください。 #-------------------------------------------------- *起動中ウィンドウに反応 $SAORI引数の計算 無効 $起動中ウィンドウ群 (enumwindows) >なにも起動してない !(変数「起動中ウィンドウ群」の存在) $起動中ウィンドウの数 (split,(起動中ウィンドウ群),(b1)) $SAORI引数の計算 自動 >該当なし (compare,_(ウィンドウ反応),_) >ウィンドウ反応 #-------------------------------------------------- *なにも起動してない $SAORI引数の計算 自動 :何も起動していない時の反応 #-------------------------------------------------- *該当なし :ウィンドウが1以上起動中で反応できるウィンドウがないの時の反応。 #-------------------------------------------------- *ウィンドウ反応 (起動中ウィンドウの数)>=10 >20以上ウィンドウ反応 (起動中ウィンドウの数)>=20 :10以上ウィンドウを開いている時の反応。 *20以上ウィンドウ反応 :20以上ウィンドウを開いている時の反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),surface)&&(count,(起動中ウィンドウ群),png) :シェル画像覗いてる時の反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),savedata.txt)||(count,(起動中ウィンドウ群),variable.cfg)||(count,(起動中ウィンドウ群),misaka_vars.txt)||(count,(起動中ウィンドウ群),savefile.txt) :ゴーストのセーブデータを覗いてる時の反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),dic)&&(count,(起動中ウィンドウ群),txt)&&(count,(起動中ウィンドウ群),master) :里々辞書編集中反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),メモ帳) :メモ帳起動中反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),ペイント) :ペイント起動中反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),txt) :テキストファイル編集中反応。 #-------------------------------------------------- *ウィンドウ反応 (count,(起動中ウィンドウ群),Internet Explorer) :IEでネットサーフィン中反応。 #-------------------------------------------------- # 起動中ウィンドウ一覧表示 #-------------------------------------------------- *起動中ウィンドウ一覧 $起動中ウィンドウ群 (enumwindows) >起動中ウィンドウ無し !(変数「起動中ウィンドウ群」の存在) $SAORI引数の計算 無効 $起動中ウィンドウの数 (split,(起動中ウィンドウ群),(b1)) $ループ数 0 :\b[2]起動中ウィンドウ一覧(全(起動中ウィンドウの数)個) >ウィンドウ表示ループ *ウィンドウ表示ループ :\_q○ (S(ループ数))\_q $ループ数=(ループ数)+1 >ウィンドウ表示ループ (ループ数)<(起動中ウィンドウの数) おわり。 $SAORI引数の計算 自動 $ループ数 #-------------------------------------------------- *起動中ウィンドウ無し :起動しているウィンドウはありません。 #-------------------------------------------------- # 起動中ウィンドウ反応ランダムトーク #-------------------------------------------------- # メモ帳起動してるとメモ帳の話をするランダムトークが追加される とか。 #-------------------------------------------------- *OnTalk >(R1) (R0) () #-------------------------------------------------- *ランダムトーク $SAORI引数の計算 自動 () #-------------------------------------------------- * >ランダムトーク !(count,(enumwindows),メモ帳) :メモ帳起動してる時のランダムトーク。 * >ランダムトーク !(count,(enumwindows),ペイント) :ペイント起動してる時のランダムトーク。 * $起動中ウィンドウ群 (enumwindows) >ランダムトーク !(変数「起動中ウィンドウ群」の存在) $SAORI引数の計算 無効 $起動中ウィンドウの数 (split,(起動中ウィンドウ群),(b1)) >ランダムトーク (起動中ウィンドウの数)<10 :起動中ウィンドウが10以上ある時のランダムトーク。 $SAORI引数の計算 自動 * $起動中ウィンドウ群 (enumwindows) >ランダムトーク (変数「起動中ウィンドウ群」の存在) :何も起動してない時のランダムトーク。 * :通常ランダムトーク 1 * :通常ランダムトーク 2