他アプリの位置を操作 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るきお  (社会人)
投稿日時
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
ひょっとするとこれを組み合わせて目的のウィンドウに移動させた上で最大化する必要があるかもしれません。
まず、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 15:07:37
こんにちは。またお世話になります。
表題の件ですが、現在 モニタ1モニタ2モニタ3がありchromeブラウザがモニター1のどこかに位置しているとして強制的に他モニターに最大化で表示させたいのですがこうゆうのはwindows10のレジストリ?に関係してくるものなんですか?よくわかっていません。
どうすればよいのでしょうか?全く分からないのでヒントなんかを教えていただければ幸いです。
表題の件ですが、現在 モニタ1モニタ2モニタ3がありchromeブラウザがモニター1のどこかに位置しているとして強制的に他モニターに最大化で表示させたいのですがこうゆうのはwindows10のレジストリ?に関係してくるものなんですか?よくわかっていません。
どうすればよいのでしょうか?全く分からないのでヒントなんかを教えていただければ幸いです。
色々未知の情報を頂きました恐縮です。
とにかく解法の糸口が見つかりませんでしたので助かります。
ご返信の机上の案ですが、ご紹介いただいたサイトを巡り
これからゆっくりと追々勉強していくのでまた何かあればよろしくお願いいたします。