【问题标题】:Is it possible to put a single monitor to sleep using WinAPI/C#?是否可以使用 WinAPI/C# 让单个显示器进入睡眠状态?
【发布时间】:2011-05-25 12:21:30
【问题描述】:

通过使用 Windows API,可以将显示器置于睡眠模式:

[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

然后

SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)2);

运行上述命令时,两个监视器都进入睡眠状态。是否有可能只影响多个连接的监视器中的一个?

【问题讨论】:

    标签: c# monitor sleep-mode


    【解决方案1】:

    确切地说,我不知道您是否可以让特定显示器进入睡眠状态。但您可以通过将显示器数量更改为一个(假设您有 2 个)来实现这一点,您希望它是清醒的。另一台将在大约一分钟后自动进入睡眠状态(大多数显示器在断开连接后大约一分钟后进入省电模式)。您实际上是以编程方式断开监视器。您可以在需要时激活它。

    但是这种方法还有其他含义,一旦你开始使用它就会知道。

    【讨论】:

    • 就像第二台显示器上的窗口被移动:)
    • @Erlend:如果你已经实现了这一点.. 你能发布一下你是如何做到的吗.. 我目前正在寻找类似的解决方案.. 虽然我已经提出了一种方法.. 试图找到你是怎么做到的……如果有的话……
    • 很遗憾,我无法做到这一点。
    【解决方案2】:

    根据this...没有。

    原因是 API 正在关闭定义为两个监视器的显示。关闭特定显示器将是硬件绑定。

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多