4

Possible Duplicate:
What is the command to use to put your computer to sleep (not hibernate)?

When I try to create a sleep shortcut in windows 7 x64 using this code:

C:\Windows\System32\rundll32.exe Powrprof.dll,SetSuspendState Sleep
C:\Windows\System32\rundll32.exe Powrprof.dll,SetSuspendState
C:\Windows\System32\rundll32.exe Powrprof.dll,SetSuspendState 0.1.0

Then Windows hibernates instead of going to sleep.

I don't want to turn off hibernate as I do still want to be able to use it.

How do I make this work to make my computer go to sleep?

0

1 Answer 1

17

Do not call these functions from rundll32. They were not designed to, and if you do, you are basically passing garbage as arguments.

You can use PsShutdown to suspend the computer (psshutdown -d) or write a tiny program of your own (someone already did1).


1 Compiled version.

4
  • How do you tell that a function was not designed for Rundll32? Jun 20, 2012 at 19:10
  • 1
    @accolade: You read its documentation. The compatible functions have a very specific signature (HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow), and usually their documentation explicitly mentions rundll32. All other functions are not compatible. Jun 20, 2012 at 21:20
  • @grawity: Thanks! How did you find the documentation for Powrprof.dll,SetSuspendState? (I had no success with two quick googlings.) Jun 22, 2012 at 0:29
  • 1
    @accolade: Search for the function name only, and it'll usually be the first or second result. (The DLL name is not part of normal usage; this is probably why you found no results with it.) Since it is part of Windows, adding the msdn keyword may help as well. Jul 22, 2012 at 22:54

Not the answer you're looking for? Browse other questions tagged .