スタンバイ状態からのタイマー復帰後の画面


あれこれハッピー  2006-06-02 18:05:51  No: 21974

スタンバイ状態よりタイマーにより自動復帰するプログラムを
書いています。
一点納得がいかないことがあります。

休止状態からの復帰は大丈夫ですが、
スタンバイ状態からの復帰をしますと電源は復帰しますが、
ハードディスクランプが点滅状態で、画面が真っ黒のままなのです。
マウスを少し動かすと画面が表示される状況で、
復帰と同時に画面表示されません。

休止状態はうまくいくのですが、プログラム上どこが違うのでしょうか?
どなたかアドバイスいたけませんでしょうか?

// スタンバイルーチン
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制御を返す});
以上よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加