スタンバイ状態よりタイマーにより自動復帰するプログラムを
書いています。
一点納得がいかないことがあります。
休止状態からの復帰は大丈夫ですが、
スタンバイ状態からの復帰をしますと電源は復帰しますが、
ハードディスクランプが点滅状態で、画面が真っ黒のままなのです。
マウスを少し動かすと画面が表示される状況で、
復帰と同時に画面表示されません。
休止状態はうまくいくのですが、プログラム上どこが違うのでしょうか?
どなたかアドバイスいたけませんでしょうか?
// スタンバイルーチン
function standby(aStandby :Boolean) {True:スタンバイ False:休止状態}
:Boolean; {True:成功}
var
hToken, len :Cardinal;
NewToken, PreToken :TTokenPrivileges;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess,
(TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES),
hToken) then begin
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME,
NewToken.Privileges[0].Luid);
NewToken.PrivilegeCount := 1;
NewToken.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, NewToken,
SizeOf(PreToken), PreToken, len);
if (GetLastError = ERROR_SUCCESS) then
Result := SetSystemPowerState(aStandby, True);
end;
end;
:
:
// 実行部分
if SetWaitableTimer(hTimer, pLargeInteger^{largeInteger},
0{INTERVAL_MSEC}, nil, nil, True{回復}) then
begin
{スタンバイまたは休止}
if standby(aStandby) then begin
{タイマーを監視して待機状態に入ります}
dwResult := WaitForSingleObjectEx(hTimer,
INFINITE{待機し続ける},
False{True制御を返す});
以上よろしくお願いします。
ツイート | ![]() |