如何在C#中正确关闭显示器电源?

时间:2009-03-03 01:01:11

标签: c#

我已经使用了一些代码来关闭显示器电源,但我还是有点问题。

代码大部分时间都能正常工作,但偶尔会有一段时间,显示器变成空白。我的意思是屏幕是全黑的,你看不到任何东西,但你可以看到它仍然亮着。 LCD指示灯仍然亮着,但屏幕完全是黑色。

我不知道为什么会发生这种情况,也许有些人知道为什么......如果我设置Windows电源设置以在X分钟后关闭显示器,这将永远不会发生,但我需要一个应用程序来执行此操作以便我可以每当我想要的时候用快捷方式调用它。

我正在使用的代码是这样的:

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);

const int WM_SYSCOMMAND   = 0x0112;
const int SC_MONITORPOWER = 0xF170;
const int HWND_BROADCAST  = 0xFFFF;

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您不希望将该消息广播到所有窗口。你依靠他们每个人按照你的期望来处理它。

您需要创建自己的,并且只向其发送消息,以便您可以控制行为。

Raymond Chen在这篇文章的评论中提到了一些解决方案:http://blogs.msdn.com/oldnewthing/archive/2006/06/13/629451.aspx

答案 1 :(得分:1)

您是否在多台机器上进行了测试?可能是司机问题......

答案 2 :(得分:0)

没有任何效果,我创建了自己的Window并使用了Window窗口,大多数时候,屏幕关闭,它完全变黑(LCD灯熄灭),但每隔一段时间,液晶显示屏就没有了关掉...... :(

答案 3 :(得分:0)

我也遇到了这个问题。机器通常工作正常,然后由于没有已知的原因,不允许屏幕睡觉。我找不到具体的共性。

甚至在机器退出时也会发生这种情况。通常1次重启将解决问题。并非总是如此。

我甚至看到屏幕醒来后又拒绝再次在已退出的机器上睡觉,没有人与之互动。

显然有一些过程或过程需要责备,但你如何追踪它们呢?