【问题标题】:How Detect second screen如何检测第二个屏幕
【发布时间】:2018-06-18 19:52:09
【问题描述】:

我是一名 C# 开发人员。 我有两个屏幕(显示器),我使用这行代码:

Process.Start(@"C:\Program Files\Windows Media Player\wmplayer.exe" , @"C:\advertise.mp4");

启动我的 Windows Media Player。我的问题是如何选择我的进程在第二个屏幕(监视器)上启动?

【问题讨论】:

  • Screen.AllScreens[1]
  • 一般来说,先用谷歌搜索你的问题会有所帮助。很有可能,有人在你之前做到了。
  • 编辑了我的答案,提供了如何在不同屏幕上启动进程的链接。

标签: c# console-application


【解决方案1】:

正如 Banana 在 cmets 中提到的,检测第二个屏幕的一种简单有效的方法是在您的项目中添加对 System.Windows.Forms 程序集的引用,然后利用 Screen 类的静态 AllScreens 属性,它返回 Screen 实例的数组。以下是仅获取计数的代码示例,但您还可以找到其他信息,例如检测其中哪些当前正在考虑系统中的主监视器。

// using System.Windows.Forms int screenCount = Screen.AllScreens.Length;

【讨论】:

    【解决方案2】:

    就像 Banana 评论的那样:使用 Screen class 您将能够使用它的 AllScreens 属性。

    从那里你可以通过index取出你想要使用的屏幕:

    var screens = Screen.AllScreens;
    var screen = screens[1];
    

    如果您使用超过 2 个屏幕,则使用 DeviceName 可能是正确的选择:

    var screen = screens.Single(x => x.DeviceName == "name of the monitor");
    

    正如 Kyle Burns 在他的回答中所说:

    您还可以找到其他信息,例如检测其中哪些当前正在考虑系统中的主监视器

    编辑:

    Here is a solution on how to start a process on a different screen

    【讨论】:

      【解决方案3】:
      var screens = Screen.AllScreens; 
      
      var count = screens.length;
      

      你也可以遍历屏幕

      screens.ForEach(screen => {
          //do something with screen object
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多