Możesz wykryć wybudzenie, okresowo porównując bieżący czas systemowy z poprzednim czasem systemowym.
Edycja:oto przykład, który wygląda na to, że pomoże ci wykryć, kiedy komputer przechodzi w stan uśpienia:http://www.codeguru.com/cpp/w-p/system/messagehandling/article.php/c6907