К сожалению, моя репутация не позволяет мне комментировать ответ (пока). Но я пришел сюда в поисках альтернативы , потому что Я пытался избежать использования командной строки, поэтому я просто должен сказать следующее: я не думаю, что вызов SetSuspendState напрямую является ответом.
Взгляните сюда по причине:
http://blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx
(короткая версия: могут случиться плохие вещи. Длинная версия: неожиданная сигнатура функции повреждает стек).
Если вам нужна другая причина, похоже, она просто ... не работает в Win7 (независимо от того, что вы передаете в качестве параметров, она всегда переходит в режим гибернации - никогда в режим ожидания). По крайней мере, это то, что случилось со мной, и из того, что я читаю онлайн, я не единственный.