3 回答
TA贡献1808条经验 获得超4个赞
GetDevicePowerState 有时适用于监视器。如果存在,则可以打开\\.\LCD设备。完成后立即将其关闭。
本质上,您很不走运-没有可靠的方法来检测显示器的电源状态,缺少编写设备驱动程序以及过滤显示驱动器链上下的所有电源IRP的方法。而且也不是很可靠。
TA贡献1862条经验 获得超6个赞
你不能
看起来所有连接到“电源安全模式”的显示器电源功能都
经过搜索,我在这里找到了在SC_MONITORPOWER消息和系统值(第2个帖子)之间连接
的代码,当我手动切换时,我使用该代码来测试系统值是否正在更改关闭显示器。
int main()
{
for(;monitorOff()!=1;)
Sleep(500);
return 0;
}//main
而且无论我关闭显示器多长时间,代码都不会停止。
有monitorOff功能的代码:
int monitorOff()
{
const GUID MonitorClassGuid =
{0x4d36e96e, 0xe325, 0x11ce,
{0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18}};
list<DevData> monitors;
ListDeviceClassData(&MonitorClassGuid, monitors);
list<DevData>::iterator it = monitors.begin(),
it_end = monitors.end();
for (; it != it_end; ++it)
{
const char *off_msg = "";
//it->PowerData.PD_PowerStateMapping
if (it->PowerData.PD_MostRecentPowerState != PowerDeviceD0)
{
return 1;
}
}//for
return 0;
}//monitorOff
结论:当您手动切换显示器时,您将无法通过Windows捕获它(如果没有异常的驱动程序界面),因为所有Windows功能都已连接到“电源安全模式”。
- 3 回答
- 0 关注
- 1793 浏览
添加回答
举报