0

アプリケーションがフォームの上にあるかどうかを確認する方法はありますか?

たとえば、フォームを開き、他の 2 つのウィンドウ (音楽プレーヤーや Web ブラウザーなど) を開いて、これらのウィンドウを一覧表示するにはどうすればよいでしょうか?

4

2 に答える 2

0

その標準的な方法は

  1. ウィンドウの境界ボックスを長方形として取得します。
  2. Z 軸上のウィンドウの位置を取得します。
  3. 自分の Z 軸位置よりも高い位置にある開いているすべてのウィンドウを見つけます (上記の @ReedCopsey による回答を参照してください)。
  4. そのようなウィンドウごとに、そのバウンディング ボックスが自分のウィンドウと交差するかどうかを判断します。見る:

    アルゴリズムの議論のために。または、System.Windows.Rect.Intersect()オーバーロードを使用して CLR に作業を任せます。

于 2013-10-11T19:21:36.730 に答える
0

たとえば、フォームを開き、他の 2 つのウィンドウ (音楽プレーヤーや Web ブラウザーなど) を開いて、これらのウィンドウを一覧表示するにはどうすればよいでしょうか?

P/Invoke できEnumWindowsます。これにより、ウィンドウのリストがz オーダーで返されます。

見つかったらすぐに、Form検索を続ける必要がないことがわかります。ウィンドウ ハンドルの前に見つかったすべてのウィンドウは、z オーダーでフォームの「上」になります。

自分のウィンドウに重なっているウィンドウだけに関心がある場合は、それらの位置とサイズも確認する必要があります。

于 2013-10-11T19:13:10.547 に答える