如何在Windows 7和XP中以编程方式检查“Windows电源管理”是否关闭了显示器?(如果我能接收到事件,那就更好了。)
如何在Windows 7和XP中以编程方式检查“Windows电源管理”是否关闭了显示器?(如果我能接收到事件,那就更好了。)
我认为在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 Code Pack的链接:Windows API Code Pack:在哪里?
如果您想像本帖子中提到的那样使用它,请参考此链接:https://dev59.com/TGAf5IYBdhLWcg3w_G2r#27709672
你的应用程序将收到一个带有SC_MONITORPOWER参数的WM_SYSCOMMAND消息(请确保首先使用0xfff0和wParam)。当屏幕保护程序启动(SC_SCREENSAVE)时,它会发送类似的消息。如果你的目标是防止屏幕关闭,你可以在这些消息上返回0,但是当用户设置了密码时,这种方法不起作用。