我试图弄清楚如何在Windows 7下使用C#检查屏幕保护程序是否处于活动状态。
好吧,我用Google搜索了这个并找到了一些解决方案:
[DllImport( "user32.dll", CharSet = CharSet.Auto )]
private static extern bool SystemParametersInfo(int uAction, int uParam, ref bool lpvParam, int flags );
然后:
private const int SPI_GETSCREENSAVERACTIVE = 16;
功能:
public static bool GetScreenSaverActive()
{
bool isActive = false;
SystemParametersInfo( SPI_GETSCREENSAVERACTIVE, 0, ref isActive, 0);
return isActive;
}
但不幸的是,这在几台PC上无法正常工作。
如果屏幕保护程序从未被激活,则函数GetScreenSaverActive
将返回false。如果屏幕保护程序已被激活,则返回true。没关系。
但是如果屏幕保护程序比去激活的话,该功能仍然是真的 - 即使我重新启动电脑。我不知道那里发生了什么,但是当我激活屏幕保护程序时,我总是得到一个真实的。