Вы не можете.
Похоже, что все возможности питания монитора подключены к «безопасному режиму питания»
После поиска я нашел здесь код, соединяющий сообщение 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 подключены «безопасный режим питания» .