我试图从屏幕对象的Screen.AllScreen数组中找到哪个屏幕包含活动窗口,因此我可以使用该窗口显示一个新窗口。
我能想到的最好的方法是用pinvoke来获取前景活动窗口,然后以某种方式从该对象中找到某种屏幕位置,然后将该点与屏幕对象区域的数组进行比较以查看它是否包含在那里。左上角足够好,我将忽略同时在多个监视器上显示活动窗口的可能性。
是否有一种更简单的方法可以避免使用pinvoke的getforegroundwindow和包含的点迭代搜索?
答案 0 :(得分:2)
只需使用静态方法Screen.FromHandle()
即可获得包含活动表单最大部分(Handle
)的屏幕,如下所示:
Screen scr = Screen.FromHandle(GetForegroundWindow());
还有3个静态方法从Screen
,Control
和Point
获得Rectangle
。