2

我正在尝试从 Screen 对象的 Screen.AllScreen 数组中查找哪个屏幕包含活动窗口,因此我可以使用该屏幕来显示一个新窗口。

我能想到的最好方法是调用以获得前景活动窗口,然后以某种方式从该对象中找到某种屏幕位置,然后将该点与屏幕对象区域数组进行比较,以查看它是否包含在那里。左上角就足够了,我将忽略同时在多个显示器上显示活动窗口的可能性。

有没有更简单的方法可以避免 pinvoke 的 getforegroundwindow 和包含的点迭代搜索?

4

1 回答 1

2

只需使用静态方法Screen.FromHandle()来获取包含活动表单最大部分的屏幕(by Handle),如下所示:

Screen scr = Screen.FromHandle(GetForegroundWindow());

还有 3 个静态方法Screen来自Control,PointRectangle.

于 2013-07-19T01:41:49.890 回答