proxyサーバーは平日の日中のみにすればOKなので、タスクスケジューラでsuspendさせることにした。

代わりに SetSuspendState() という API 関数を使います。
この関数は最後の引数に DisableWakeEvent というのがあり、これを FALSE にすれば復帰のイベントが無効になりません。
SetSuspendState() は powrprof.dll 内にありますので、使う時は powrprof.lib をリンクして、powrprof.h を include します。
具体的なコードとしては以下のようになります。

#include <windows.h>
#include <powrprof.h>
#pragma comment(lib, "powrprof.lib")

BOOL Suspend(void)
{
return SetSuspendState(FALSE, FALSE, FALSE);
}


SetSuspendState() の最初の引数を TRUE にすればハイバネートになります。

また、よく「システムを休止状態にするショートカットを作成する」などと称してこんなコマンドが掲載されていますが、

rundll32.exe PowrProf.dll,SetSuspendState


これでは自動復帰できません。