Vista and Windows 7 do not allow you to cancel suspend requests. You need to stop the suspend request being raised (where as in XP you can actually intercept the message and tell windows to ignore it)1 - Is it possible to cancel the suspend when MPSH is notified? If it is possible, you can cancel the suspend do the suspend actions and call suspend again.
Not sure if you have looked before but
SetThreadExecutionState Function (Windows)
is pretty good as showing how it should work in Vista.
The problem of the request to standby already being sent might still be a problem as once the actual request to sleep is sent it is too late.