desktop explorer

desktop ( Windows XP ) まわりの mayu 設定や Windows native program を書いていていろいろわかった & 対処したことのまとめ。けっこう悪質。まず class name なんだけど同様のものが 2 つある。以下の説明は別に言葉の言い換えをしているわけではなくて全くの別物。

  • すべての window を最小化した状態
    • C:\WINDOWS\Explorer.EXE:Progman:SHELLDLL_DefView:SysListView32
    • 手動ですべての window を最小化していった際や Windows+m を押したときにこいつが active になる。以降便宜的に Progman と呼ぶ。
  • desktop を表示した状態
    • C:\WINDOWS\Explorer.EXE:WorkerW:SHELLDLL_DefView:SysListView32
    • Windows+d を押したときに active になる window 。こちらも便宜的に WorkerW と呼ぶ。
    • 何らかの window が active になると Progman がこいつを覆い隠してしまうので class name を調べるには mayu の &WindowIdentify() 関数を使わないとダメだったりする。

Microsoft 社では上記 2 つは別物として扱ってるわけだね。で、 mayu に desktop 用の設定を書くときには調査 dialog で class name を調べると思うんだけど大体どちらかひとつしか書かないので動く場合と動かない場合があって混乱する、と ( うちの場合は Windows+d を押して desktop を表示するんだけど Progman だけ書いてたのでうごかねぇむきぃぃぃぃという状況 ) 。まぁここまでわかってしまえば後は楽で window directive の正規表現も以下のような感じになる。

window desktop /(?:Progman|WorkerW):SHELLDLL_DefView:SysListView32$/ : Global

次。 desktop では icon が縦に並ぶのに選択時の振る舞いが横指向な点。具体的には最初以下のような感じだったとして

Shift+Down を押すと以下のようになってしまって意図に反する。

これは mouse を使って矩形で選択する場合は問題にならないんだけど keyboard を使ってるとどうしようもなくなってしまう。一応 mayu で以下のような設定をすることで誤魔化してる。

key S-Down = C-Down Space
key S-Up   = C-Up   Space

縦方向に関してはこれで何とかなるんだけど横方向に選択したい場合はやっぱり mayu では無理があるのでそのうち TTBase plugin としてここらへん補正するものを書こうかなと思っている ( 予定は未定 ) 。いやでも Microsoft 社はこの点に関しての patch を出すべきだよな。