using System; using System.Runtime.InteropServices; namespace BizHawk.Client.EmuHawk { // Derived from http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx public static class ScreenSaver { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern bool SystemParametersInfo(int uAction, int uParam, ref int lpvParam, int flags); private const int SPI_GETSCREENSAVERTIMEOUT = 14; private const int SPI_SETSCREENSAVERTIMEOUT = 15; private const int SPIF_SENDWININICHANGE = 2; public static void ResetTimerImmediate() { SetScreenSaverTimeout(GetScreenSaverTimeout()); } private static int ctr; public static void ResetTimerPeriodically() { ctr++; if (ctr == 120) { SetScreenSaverTimeout(GetScreenSaverTimeout()); ctr = 0; } } // Returns the screen saver timeout setting, in seconds private static Int32 GetScreenSaverTimeout() { Int32 value = 0; SystemParametersInfo(SPI_GETSCREENSAVERTIMEOUT, 0, ref value, 0); return value; } // Pass in the number of seconds to set the screen saver timeout value. private static void SetScreenSaverTimeout(Int32 Value) { int nullVar = 0; SystemParametersInfo(SPI_SETSCREENSAVERTIMEOUT, Value, ref nullVar, SPIF_SENDWININICHANGE); } } }