setSuspendState只能运行一次

时间:2011-01-17 13:58:33

标签: c++ winapi

我的应用程序可以设置唤醒计时器并将计算机发送到待机状态。

hTimer = CreateWaitableTimer(NULL, true, NULL);
SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, true);
SetSuspendState(false, true, false);

唤醒时,计时器被取消。

if (message->message == WM_POWERBROADCAST
 && message->wParam == PBT_APMRESUMEAUTOMATIC)
    CancelWaitableTimer(hTimer);

这似乎有效。计算机进入待机状态并在正确的时间唤醒。如果计时器调整到第二天,它也会唤醒,但随后会发生以下情况:

将计算机再次发送到待机状态(按钮或代码无关紧要)后,它会进入待机状态并立即再次唤醒。

有人知道为什么它会再次唤醒吗?

MinGw,gcc,WinXP Sp3

0 个答案:

没有答案