检查Windows电源管理是否关闭了显示屏

时间:2011-06-30 06:49:18

标签: c# c++ winapi windows-7 windows-xp

如果“Windows电源管理”关闭了显示器,我如何以编程方式检查Windows 7和XP? (如果我能收到一个事件,那会更好。)

3 个答案:

答案 0 :(得分:7)

我不认为它可以用于XP。在Windows 7中,有各种与电源管理相关的好东西。 Windows API Code Pack是一组托管包装器,可以很容易地从C#或VB调用,并映射Windows范例(如事件接收器,Windows) 消息和函数指针)到.NET(如委托和事件)。从代码包附带的电源管理演示,这里有一些你可能喜欢的代码:

using Microsoft.WindowsAPICodePack.ApplicationServices;

// . . .
        PowerManager.IsMonitorOnChanged += new EventHandler(MonitorOnChanged);
// . . .
    void MonitorOnChanged(object sender, EventArgs e)
    {
        settings.MonitorOn = PowerManager.IsMonitorOn;
        AddEventMessage(string.Format("Monitor status changed (new status: {0})", PowerManager.IsMonitorOn ? "On" : "Off"));
    }

编辑:

Windows API代码包的链接:Windows API Code Pack: Where is it?

如果您想使用它,就像在这篇文章中提到的那样,请检查:https://stackoverflow.com/a/27709672/846232

答案 1 :(得分:1)

您的应用程序将在wParam中获取带有SC_MONITORPOWER的WM_SYSCOMMAND消息(确保首先使用0xfff0和wParam)。当屏幕保护程序启动时,它将发送类似的消息(SC_SCREENSAVE)。如果您的目标是阻止屏幕关闭,您可以在这些屏幕上返回0,但是当用户设置了密码时这不起作用。

答案 2 :(得分:-5)

相关问题