アプリケーションがフォームの上にあるかどうかを確認する方法はありますか?
たとえば、フォームを開き、他の 2 つのウィンドウ (音楽プレーヤーや Web ブラウザーなど) を開いて、これらのウィンドウを一覧表示するにはどうすればよいでしょうか?
その標準的な方法は
そのようなウィンドウごとに、そのバウンディング ボックスが自分のウィンドウと交差するかどうかを判断します。見る:
アルゴリズムの議論のために。または、System.Windows.Rect.Intersect()
オーバーロードを使用して CLR に作業を任せます。
たとえば、フォームを開き、他の 2 つのウィンドウ (音楽プレーヤーや Web ブラウザーなど) を開いて、これらのウィンドウを一覧表示するにはどうすればよいでしょうか?
P/Invoke できEnumWindows
ます。これにより、ウィンドウのリストがz オーダーで返されます。
見つかったらすぐに、Form
検索を続ける必要がないことがわかります。ウィンドウ ハンドルの前に見つかったすべてのウィンドウは、z オーダーでフォームの「上」になります。
自分のウィンドウに重なっているウィンドウだけに関心がある場合は、それらの位置とサイズも確認する必要があります。