他アプリの位置を操作

タグの編集
投稿者 taka  (社会人) 投稿日時 2021/1/13 15:07:37
こんにちは。またお世話になります。

表題の件ですが、現在 モニタ1モニタ2モニタ3がありchromeブラウザがモニター1のどこかに位置しているとして強制的に他モニターに最大化で表示させたいのですがこうゆうのはwindows10のレジストリ?に関係してくるものなんですか?よくわかっていません。

 どうすればよいのでしょうか?全く分からないのでヒントなんかを教えていただければ幸いです。













投稿者 るきお  (社会人) 投稿日時 2021/1/13 20:42:35
私ならば次のように考えます。実際に作ったことはないので机上の案です。

まず、Process.GetProcessByName("chrome") で 実行中のChromeのプロセスを取得します。
Chromeはバックグラウンドのプロセスも存在するので、MainWindowHandleプロパティを確認することでウィンドウが表示されているプロセスかどうかわかります。

ウィンドウが表示されているプロセスは MainWindowHandleプロパティでWindowのハンドルを取得できます。

このハンドルがあれば、Windows API の SetWindowPositionでウィンドウの位置を変更できます。
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-setwindowpos
変更すべき位置は、Screen.AllScreens ですべてのディスプレイの座標と大きさ取得することで割り出します。

また ShowWindow で最大化を命令できます。
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-showwindow

ひょっとするとこれを組み合わせて目的のウィンドウに移動させた上で最大化する必要があるかもしれません。
投稿者 taka  (社会人) 投稿日時 2021/1/13 21:22:33
るきお様 返信ありがとうございます。
 
 色々未知の情報を頂きました恐縮です。
 とにかく解法の糸口が見つかりませんでしたので助かります。
 ご返信の机上の案ですが、ご紹介いただいたサイトを巡り
 これからゆっくりと追々勉強していくのでまた何かあればよろしくお願いいたします。