I want to receive a notification in my C++ application when a screensaver is about to start. I tried listening to WM_SYSCOMMAND
messages with wParam == SC_SCREENSAVE
which some people think should do the trick.
That didn't work. Spy++ even showed that my window didn't receive any WM_SYSCOMMAND
message. Interesting thing is when I turned off the monitor I did receive the message with wParam == SC_MONITORPOWER
. Am I understanding it wrong? Or did I just miss something?
Edit: For testing I used the default windows screensaver (the one with windows logo).
It appears that I will receive the SC_SCREENSAVE message only when my window has focus. The way around this is to set global hook. That would require me to put the callback function in a separate DLL and there is also this scary message about hooks slowing down the system so I decided to drop the idea of responding to screensaver start.