ウインドウをプライマリに集めるアプリ『WindowReunion』
マルチディスプレイ上に散らばったウインドウを、プライマリディスプレイ上に集めるアプリが欲しかったので作ってしまいました☆
『WindowReunion』と名付けました。
「終了時の座標を覚えているアプリケーション」が次の例になった場合にも、WindowReunionは活躍します。
例1:PCを起動しつつ、セカンダリディスプレイの映像入力をHDMIなどに切り替えてゲーム機の映像を映している場合。
例2:ディスプレイの解像度や構成を変えた後に「終了時の座標を覚えているアプリケーション」を起動させたら、
現在のディスプレイの画面外に表示されてしまった場合
どちらの場合でも簡単にプライマリ上に呼び戻せます。
■ダウンロード:WindowReunion112.zip
※2010-09-01にv1.1.2に更新しました
動作確認環境
・Windows XP SP3 32bit ※「.NET Framework2.0」以上必須(推奨3.5)
・[推奨]Windows 7 32bit/64bit
使い方:WindowReunion.exeを起動させてReunionボタンを押すだけ
※2010-09-01にv1.1.2に更新しました
動作確認環境
・Windows XP SP3 32bit ※「.NET Framework2.0」以上必須(推奨3.5)
・[推奨]Windows 7 32bit/64bit
使い方:WindowReunion.exeを起動させてReunionボタンを押すだけ
Before
After
仕組みとしては、EnumWindowsで列挙した全てのウインドウハンドルに対してSetWindowPosをキメているだけなので、このWindowReunionを実行したことによって、もしかしたら見えてはいけないウインドウがタスクバー上に出現してしまうかも知れません。
その他、不具合が起きてもmontaは一切責任を負いませんので予めご了承ください。
それにしても、どうやってもSteamクライアントだけ移動できないんですよ。
まぁセカンダリディスプレイで何かしつつ、Steamでも何かしたいというパターンは限られるので、そこまで困ることはないですよね?
追記(2010-08-14): Steamクライアントがバージョンアップしたら普通に動くようになってました。
私もxbox360をしながら、攻略wikiを見ることが多いので便利です。
マルチモニター向けのアプリって以外と少ないですよね。
Comment by zabuton — 2010 年 3 月 21 日 @ 20:17
無事に動いているようで何よりです。
マルチモニタ向けのツールが少ない理由として、案外プログラマはシングルディスプレイ環境だったり、
デュアル環境でも基本的にPCは開発ツールとしてしか使っていなく、遊び用やCG用として使う場合の不便なことを
思いつかなかいためだと勝手に想像しています。
Comment by monta — 2010 年 3 月 21 日 @ 23:25
Comment by 丼 — 2010 年 3 月 22 日 @ 01:57
ヒントを頼りに、子ウインドウを列挙するEnumChildWindowsを試してみました。
http://monta.moe.in/images/img14/100321_03.png
Steamクライアントが内部に子ウインドウを持っていることはわかったのですが、
やはり大元の親ウインドウが移動してくれないんですよ。
一応、EnumWindowsでSteamのウインドウタイトルを持つハンドルは取得できていて、
SetWindowPosの結果もtrueが返ってきてはいるのですが……現実はチャイルドエラー。
Comment by monta — 2010 年 3 月 22 日 @ 10:31
ほんとうに助かりました。
Win7 64bit
Comment by すばらしい — 2013 年 1 月 1 日 @ 10:46