win7 息屏检测代码
时间: 2023-09-11 21:11:42 浏览: 135
你可以使用以下代码来检测 Windows 7 操作系统的息屏状态:
```c++
#include <Windows.h>
bool isScreenSaverRunning() {
return (bool)SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, 0, 0);
}
bool isMonitorOn() {
DISPLAY_DEVICE dd;
dd.cb = sizeof(DISPLAY_DEVICE);
for (DWORD i = 0; EnumDisplayDevices(NULL, i, &dd, 0); i++) {
if (dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
DEVMODE dm;
dm.dmSize = sizeof(DEVMODE);
dm.dmDriverExtra = 0;
EnumDisplaySettings(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm);
return !(dm.dmFields & DM_DISPLAYORIENTATION ||
dm.dmFields & DM_DISPLAYFIXEDOUTPUT ||
dm.dmFields & DM_INTERLACED ||
dm.dmFields & DM_GRAYSCALE ||
dm.dmFields & DM_DISPLAYFLAGS && dm.dmDisplayFlags &
(DM_GRAYSCALE | DM_INTERLACED));
}
}
return false;
}
int main() {
while (true) {
bool screensaver_running = isScreenSaverRunning();
bool monitor_on = isMonitorOn();
if (screensaver_running || !monitor_on) {
// 息屏
// do something...
} else {
// 屏幕开启
// do something...
}
Sleep(1000);
}
return 0;
}
```
该代码会每秒钟检测一次屏幕状态,如果屏幕被锁定或息屏,则会执行 "息屏" 部分的代码,否则执行 "屏幕开启" 部分的代码。
阅读全文