私の問題文を説明しましょう:
私のVC ++プロジェクトでは、システム(Windows 8)をプログラムでスリープ状態にして再開するロジックを挿入したいと考えています。
私はこのようにやっています(コードスニペットのコピー)::
int wait = 100;
LARGE_INTEGER WaitTime;
WaitTime.QuadPart = wait;
WaitTime.QuadPart *= -10000000;
HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
if(0 == SetWaitableTimer(hTimer, &WaitTime, 0, NULL, NULL, TRUE))
{
res = false;
return res;
}
if(0 == SetSuspendState(FALSE, FALSE, FALSE))
{
res = false;
return res;
}
システムがスリープ状態になります (モニターがオフになります)。
ここでは、SetSuspendState() API 呼び出し後にスリープ状態から再開したいと考えています。しかし、SetSuspendState() 呼び出しがまったく返されていないことがわかります。コントロールは、この SetSuspendState() 呼び出し自体で攻撃され、戻りません。
ただし、システムを強制的に電源に戻すと、システムは元に戻りますが、関数「SetSuspendState()」はコードに戻りません。
SetSuspendState() が返されない理由と、この問題を解決する方法を理解するのを手伝ってください。前もって感謝します。
PS: このスリープ状態を実現するために、VS リモート デバッガー メカニズムを使用しています。