1. 程式人生 > 實用技巧 >Delphi WinAPI SetThreadExecutionState - 防止系統在應用程式執行時進入睡眠狀態或關閉顯示器。

Delphi WinAPI SetThreadExecutionState - 防止系統在應用程式執行時進入睡眠狀態或關閉顯示器。

Delphi WinAPI SetThreadExecutionState - 防止系統在應用程式執行時進入睡眠狀態或關閉顯示器。

描述:使應用程式能夠通知系統它正在使用,從而防止系統在應用程式執行時進入睡眠狀態或關閉顯示器。

原型:

EXECUTION_STATE SetThreadExecutionState(
  EXECUTION_STATE esFlags
);

esFlags 引數:

  • ES_AWAYMODE_REQUIRED  0x00000040
    • 啟用離開模式。此值必須使用ES_CONTINUOUS指定。
    • 離開模式只能由媒體錄製和媒體分發應用程式使用,這些應用程式必須在桌面計算機上執行關鍵的後臺處理,而計算機似乎處於休眠狀態。
  • ES_CONTINUOUS  0x80000000
    • 通知系統正在設定的狀態應保持有效,直到下一個使用ES_CONTINUOUS和另一個狀態標誌的呼叫被清除。
  • ES_DISPLAY_REQUIRED  0x00000002
    • 通過重置顯示器空閒計時器強制顯示器開啟。 Forces the display to be on by resetting the display idle timer.
  • ES_SYSTEM_REQUIRED  0x00000001
    • 通過重置系統空閒計時器強制系統處於工作狀態。Forces the system to be in the working state by resetting the system idle timer.
  • ES_USER_PRESENT  0x00000004
    • 不支援此值。如果ES_USER_PRESENT與其他esFlags值組合,則呼叫將失敗,並且不會設定任何指定的狀態。

返回值:

  • 如果函式成功,則返回值為前一個執行緒執行狀態。
  • 如果函式失敗,返回值為空。

C++ 使用示例:

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS); 

Delphi 使用示例:

function SetThreadExecutionState(esFlags:EXECUTION_STATE ):DWORD;stdcall;external 'kernel32.dll';   //引用API函式

const
  ES_SYSTEM_REQUIRED = $00000001;
  ES_DISPLAY_REQUIRED =$00000002;
  ES_CONTINUOUS = $80000000;
begin
  SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED or ES_CONTINUOUS);  //啟動控制

  SetThreadExecutionState(ES_CONTINUOUS); //恢復
end;

  

  

  

建立時間:2020.11.03  更新時間: