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

标签 c#

我已经在使用一些代码来关闭显示器电源,但我仍然遇到了一个小问题。

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

我不知道为什么会发生这种情况,也许有些人知道为什么...如果我将 Windows Power 设置设置为在 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);

有什么想法吗?

最佳答案

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

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

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

关于c# - 如何在 C# 中正确关闭显示器电源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604727/

相关文章:

C# 用户输入 int 到数组

c# - 是否可以立即公开 DataGridComboBoxColumn?

c# - dateTime 到 winform 中的短格式

c# - CS0029 读取用户输入时

c# - 创建可用作函数/方法的类型

c# - 在对象中搜索字段

C# 授予对特定不相关类的访问权限

c# - ASP.Net 无法成功登录/注册(可以在本地运行,但不能在 Azure 上运行)

c# - LINQ:按升序对记录进行排序,最后为 NULL 值

c# - 如何在 C# 中调度事件