Article ID: 150785
Article Last Modified on 11/21/2006
/*
The following sample illustrates how to detect if a screen saver
is running on Windows NT. This sample works by checking for the
existence of a desktop named "screen-saver". This desktop is
created dynamically by winlogon when a screen saver needs to be
launched.
*/
#include <windows.h>
#include <stdio.h>
BOOL IsScreenSaverRunning( void );
int __cdecl main(void)
{
if(IsScreenSaverRunning())
{
printf("Screen saver is running!\n");
}
else
{
printf("Screen saver is NOT running!\n");
}
return 0;
}
/*
IsScreenSaverRunning
Returns TRUE if a screen saver is running; FALSE, otherwise.
*/
BOOL IsScreenSaverRunning(void)
{
HDESK hDesktop;
//
// Try to open the desktop that the screen saver runs on. This
// desktop is created on the fly by Winlogon, so it only exists
// when a screen saver is invoked.
hDesktop = OpenDesktop(TEXT("screen-saver"),
0,
FALSE,
MAXIMUM_ALLOWED);
if(hDesktop == NULL)
{
//
// If the call fails due to access denied, the screen saver
// is running because the specified desktop exists -- you just
// don't have any access.
if(GetLastError() == ERROR_ACCESS_DENIED)
{
return TRUE;
}
//
// Otherwise, indicate the screen saver is not running.
return FALSE;
}
//
// Successfully opened the desktop (the screen saver is running).
CloseDesktop(hDesktop);
return TRUE;
}
Keywords: kbhowto kbscreensaver KB150785