想知道是否有办法检查应用程序是否在我的表单之上?
例如,如果您打开表单,然后打开其他 2 个窗口(如音乐播放器和网络浏览器),并列出这些窗口?
That standard way would be to
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.
例如,如果您打开表单,然后打开其他 2 个窗口(如音乐播放器和网络浏览器),并列出这些窗口?
你可以 P/Invoke EnumWindows
。这将按z 顺序返回窗口列表。
一旦Form
找到您的,您就会知道您不再需要继续搜索。您在窗口句柄之前找到的所有窗口都将按 z 顺序“高于”您的表单。
如果您只对与您重叠的窗口感兴趣,您还必须检查它们的位置和大小。