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 關注
- 1869 瀏覽
添加回答
舉報