使用WinAPI/C#是否可以使单个显示器进入睡眠状态?

9

通过使用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);

当运行上述命令时,两个显示器都会进入睡眠状态。是否有可能只让其中一个连接的多个显示器受到影响?
2个回答

2
根据这个链接...不行。
原因是API正在关闭被定义为两个监视器的显示器。关闭特定的监视器将是硬件绑定。

2

我不确定是否可以让特定的显示器进入睡眠状态,但是您可以通过更改显示器数量为1(假设您有2个显示器),来实现这一点。您想让哪个显示器保持唤醒状态,另一个显示器将在大约一分钟后自动进入睡眠模式(大多数显示器在断开连接后约一分钟后进入省电模式)。从程序上来说,您实际上是在断开该显示器的连接。您可以在需要时激活它。

然而,这种方法将产生其他影响,您在开始尝试后会了解到。


就像第二个显示器上的窗口被移动一样 :) - Basic
@Erlend:如果你已经实现了这个功能,能否分享一下你是如何做到的?我目前也在寻找类似的解决方案。虽然我提出了一种方法,但仍在尝试弄清楚你是否真正实现了它。 - Bhuvan
很遗憾,我无法实现这个。 - Erlend D.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接