Windows2003-3790/windows/appcompat/shims/general/disablescreensaver.cpp
2020-09-30 16:53:55 +02:00

85 lines
1.5 KiB
C++

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
DisableScreenSaver.cpp
Abstract:
This shim is for apps that do bad things when screen savers are active.
Notes:
This is a general purpose shim.
History:
02/07/2001 linstev Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(DisableScreenSaver)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_END
// Store the state of the active flag
BOOL g_bActive = TRUE;
BOOL g_bSuccess = FALSE;
/*++
Turn screen saver off and on again on detach.
--*/
BOOL
NOTIFY_FUNCTION(
DWORD fdwReason
)
{
if (fdwReason == SHIM_STATIC_DLLS_INITIALIZED) {
//
// Turn OFF screen saver: detect success/failure so we know if we can
// safely clean up
//
g_bSuccess = SystemParametersInfoA(SPI_GETSCREENSAVEACTIVE, 0, &g_bActive, 0) &&
SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, FALSE, NULL, 0);
if (!g_bSuccess) {
LOGN( eDbgLevelError, "[INIT] Failed to disable screen saver");
}
} else if (fdwReason == DLL_PROCESS_DETACH) {
//
// Restore original screen saver state
//
if (g_bSuccess) {
SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, g_bActive, NULL, 0);
}
}
return TRUE;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
CALL_NOTIFY_FUNCTION
HOOK_END
IMPLEMENT_SHIM_END