読者です 読者をやめる 読者になる 読者になる

Vimperator風ウィンドウ切り替えツールSvitch

ソフトウェア プログラミング


Vimperator風って書いてもわかる人は少ないと思いますが、ホットキーでタスクバー上にヒントを表示して、目的のウィンドウに切り替える。こんな感じのツールです。マウスよりキーボードという方にお勧め。

次のような特徴があります。

  • キーボードから簡単にウィンドウを切り替え可能
  • 切り替えのためのヒント文字列をわかりやすくタスクバーに表示
  • ヒント文字列に使用する文字を指定可能
  • ウィンドウタイトルや実行ファイル名を表示可能(縦置き時)
  • STR(5),STR(-5)という書式で先頭・後方の一部の文字を表示可能
  • 常駐モードと非常駐モードを設定可能
  • ウィンドウタイトル、実行ファイル名からヒント文字を予約可能
  • C# + .NETで作っているのもあってメモリをたくさん食います(20〜30MB)

大体はこの前紹介した窓替えと似たような機能だと思いますが、インクリメンタルサーチはできません。一番の違いは画面中央あたりにウィンドウ一覧を出すか、タスクバー上にヒントを出すかということで、それが開発のモチベーションでもあります。

ちなみに、C++ネイティブのアプリに比べて起動が遅いので非常駐モードは役立たずかもしれません。設定画面はまだできてませんが中身ができたのでとりあえず公開してみます。興味のある方は試してみてください。

動作環境

WindowsXPのみで確認。2000はタスクバーの実装がXPと違うので今のところ動きません。Vistaはわかりません。例によってMicrosoft .NET Framework Version 2.0以上が必要です。

ダウンロード

Svitchのダウンロード

修正が必要だ

ノートPC(Vista)で使おうと思っていたのに実際にVistaで動かしてみたらヒントの描画が恐ろしく遅いことが発覚した.今の実装では行儀の良くないプログラムだとは思いつつも,デスクトップに直接描画する方法を取っているのだけど,Vistaになってからデスクトップ描画の実装も大幅に変わっているのでたぶんその影響なんだろう.

今になって「常に手前に表示する」「透明な背景を持つ」ウィンドウを作ってテキストボックスを並べていく方法が良いことに気づいた.そうすれば最初からダブルバッファリングとか考えなくて良かったのにね.メモリ使用量も少しは改善できるだろう.

あと,追加したい機能で,現在のウィンドウの「最小化」「最大化」「閉じる」も割り当てると良さそう.ついでにIronPythonスクリプトと組み合わせたら他にもなんかできるかな.