0

想知道是否有办法检查应用程序是否在我的表单之上?

例如,如果您打开表单,然后打开其他 2 个窗口(如音乐播放器和网络浏览器),并列出这些窗口?

4

2 回答 2

0

That standard way would be to

  1. Get your window's bounding box as a rectangle.
  2. Get your window's location on the Z-axis.
  3. Find all open windows with a Z-axis location higher than yours (which see the answer by @ReedCopsey above).
  4. For each such window, determine if its bounding box intersects yours. See:

    for a discussion of the algorithm. Or let the CLR do the work for you using the System.Windows.Rect.Intersect() overloads.

于 2013-10-11T19:21:36.730 回答
0

例如,如果您打开表单,然后打开其他 2 个窗口(如音乐播放器和网络浏览器),并列出这些窗口?

你可以 P/Invoke EnumWindows这将按z 顺序返回窗口列表。

一旦Form找到您的,您就会知道您不再需要继续搜索。您在窗口句柄之前找到的所有窗口都将按 z 顺序“高于”您的表单。

如果您只对与您重叠的窗口感兴趣,您还必须检查它们的位置和大小。

于 2013-10-11T19:13:10.547 回答