やりたいことは以下の2点です。

  1. Micrsoft Edgeを `--app` オプションで起動する
  2. `--app` で起動しているEdgeと同一のサイトへは同時に1画面しかアクセスさせない  
（すでに起動している状態で、同一サイトへアクセスしようとした場合にはポップアップでエラーを表示し、すでに起動している画面を最前面に表示するよう制御する）

  * Edgeの起動はC#のアプリケーションから実行
  * `--app` で起動するサイトは１つのみ許容する
  * 他のサイトへのアクセスは並行稼働することを許容する

上記の想定で、すでに起動しているedgeプロセスがある場合に、同一サイト（アプリ）へのアクセスかを判定する方法をご教示いただきたいです。
CC BY-SA 4.0
2022-02-01T02:35:38.783
86055
2022-02-01T10:33:55.887
2022-02-01T10:33:55.887
3060
51184
question
c# microsoft-edge
既に起動している Microsoft Edge のウィンドウをチェックする方法
なんだか[XY問題](https://ja.meta.stackoverflow.com/q/2701/26370)の感じがします。本当にやりたい事あるいは制限しなければならない条件などがあって、それを実現するために考え付いた手段が質問内容になっているのでは？

* * *

例えば単純に考えるとそれは`Micrsoft
Edge`から何か情報を取得したり動作を依頼したりするのではなく、`C#で作るEdgeランチャープログラム`が自分の責任範囲内で処理を行えば良いのでは？

  * 名前付きMutexを使ったプログラムの多重起動を禁止する記事は色々な所に見受けられるので、それらを参考に`C#で作るEdgeランチャープログラム`が多重に起動しないように出来るでしょう。
  * `C#で作るEdgeランチャープログラム`は、そのメイン処理の中で`Micrsoft Edgeを --app オプションで起動`し、起動したEdgeが終了するまで常駐して監視すれば良いのでは？  
自分自身で起動したプログラムなので、PID等のプロセス情報は分かっているだろうし、そのプロセスが終了(強制中断などでも)するのを待って`C#で作るEdgeランチャープログラム`が終了するようにすれば良いでしょう。

* * *

ただし、`C#で作るEdgeランチャープログラム`を使わず手作業で同等の`Micrsoft Edgeを --app
オプションで起動`することは止められませんし、ChromeやFirefoxを使う形でアクセスすることも止められないでしょう。

本当に強固な制限を課したいのならば、個々のPCやネットワークでファイヤーウォール/ウィルスチェッカー/Proxyサーバー/Gatewayサーバー等の全てで汎用のブラウザ等によるそのサイトへのアクセスを禁止しておき、[Microsoft
Edge WebView2](https://docs.microsoft.com/ja-jp/microsoft-
edge/webview2/)などのコントロールを使った専用のプログラムだけがアクセス出来るようにするとかが考えられます。

そうした専用のプログラムならば、1つしか起動/アクセスができないとかの制限や何か独特の振る舞いを実装するのも自分で変更することのできない汎用プログラムよりは容易に出来るでしょう。
CC BY-SA 4.0
2022-02-01T09:31:55.157
86070
2022-02-01T09:31:55.157
26370
86055
answer