Windows.Forms扩展桌面,检测C#中的各个屏幕

时间:2014-12-05 08:36:56

标签: c# winforms screen-capture multiple-monitors

我目前正在使用C#开发一个应用程序,以便能够捕获"所有屏幕都连接到它运行的计算机上。但是使用Windows.Forms存在一个我似乎无法通过的问题。

基本上,从API和我读过的其他内容中,您将使用AllScreens [i]访问连接到系统的所有屏幕。 但问题是,当我在扩展桌面上将两个屏幕连接到计算机时,它会将其检测为一个屏幕。 举个例子,如果我跑:

System.Windows.Forms.Screen.AllScreens[0].Bounds.Width

我希望得到数组中第一个屏幕的宽度,但我得到两个屏幕的组合宽度。

实际上在跑步时: AllScreens.Length它返回1.

有没有办法使用Windows.Forms实际检测单个屏幕?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下代码获取屏幕bij的所有信息:

string info = "";
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
            {
                info = info + "Working Area: " + screen.WorkingArea.ToString() + " Primary Screen:" + screen.Primary.ToString() + "\n";
            }

此代码为所有屏幕提供了独立的工作区域。

Here您可以查看额外的信息。

答案 1 :(得分:0)

不确定我是否正确理解了您的问题,但您可以使用以获取屏幕的工作区域

  System.Windows.Forms.Screen.AllScreens[0].WorkingArea.Width

AllScreens是可用屏幕的集合。