如何从Screen类获取屏幕标识号

时间:2012-09-14 15:32:19

标签: c#

我需要通过标识号在屏幕上显示对话框,例如我有这种情况 screen setup on windows

我希望在第四节显示一些内容,当我使用Screen.AllScreens获取所有屏幕时,我的第四个屏幕是数组中的0元素,因为AllScreens不是通过缩进数而是通过顺序返回屏幕。 因此有人知道如何从Screen类获取标识号,或者如何通过标识号获取屏幕坐标和界限。

更新:

DeviceName并不总是与标识号相符(见下图):

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您查看screen.DeviceName,则应该\\\\.\\DISPLAY1\\\\.\\DISPLAY2等。您可以使用它来搜索\\\\.\\DISPLAY4

答案 1 :(得分:0)

获取屏幕编号(脏路,但有效):

 var sceenId = -1;
 var targetScreen = Screen.FromPoint(Cursor.Position);
 for (var i = 0; i < Screen.AllScreens.Length; i++)
 {
     if (!Equals(targetScreen, Screen.AllScreens[i]))
         continue;
     sceenId = i;
     break;
 }

通过标识号获取屏幕坐标和界限:

Screen.AllScreens[sceenId].Bounds