WIN_POWERBROADCAST 메시지는 WM_POWERBROADCAST 메시지와 관련이 있으며, 

이 메시지는 시스템 전원 상태가 변경될 때 운영 체제에서 애플리케이션으로 브로드캐스트됩니다.

 

const
  WM_POWERBROADCAST = $0218;

 

 

WM_POWERBROADCAST는 Windows API에서 정의된 상수로, 

시스템 전원 이벤트가 발생할 때 애플리케이션의 WndProc 메서드로 전달됩니다.

파라미터
wParam: 이 파라미터는 전원 관리 이벤트의 종류를 나타냅니다. 아래는 주요한 값들입니다:
	- PBT_APMSUSPEND: 시스템이 절전 모드로 들어가려 할 때.
	- PBT_APMRESUMEAUTOMATIC: 시스템이 절전 모드에서 자동으로 복구될 때.
	- PBT_APMRESUMESUSPEND: 시스템이 절전 모드에서 사용자 입력으로 복구될 때.
	- PBT_POWERSETTINGCHANGE: 전원 설정이 변경될 때.
	
lParam: 이 파라미터는 추가적인 정보를 포함하며, 이벤트에 따라 다른 구조체로 해석될 수 있습니다.

 

procedure TForm1.WndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_POWERBROADCAST then
  begin
    case Msg.WParam of
      PBT_APMSUSPEND:
        ShowMessage('System is going to suspend.');
      PBT_APMRESUMEAUTOMATIC:
        ShowMessage('System resumed automatically.');
      PBT_APMRESUMESUSPEND:
        ShowMessage('System resumed from suspend.');
      PBT_POWERSETTINGCHANGE:
        ShowMessage('Power setting changed.');
    end;
  end;
  inherited WndProc(Msg);
end;

 

procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;

procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
begin
  case Msg.WParam of
    PBT_APMQUERYSUSPEND:
      begin
        // 절전 모드로 들어가기 전 처리
        ShowMessage('System is about to enter sleep mode.');
        Msg.Result := BROADCAST_QUERY_DENY;  // 이 값을 반환하면 절전 모드를 거부할 수 있음
      end;
    PBT_APMSUSPEND:
      begin
        // 절전 모드로 들어갔을 때 처리
        ShowMessage('System is in sleep mode.');
      end;
    PBT_APMRESUMESUSPEND:
      begin
        // 절전 모드에서 깨어났을 때 처리
        ShowMessage('System resumed from sleep mode.');
      end;
  end;
end;

 

 

- 출처 : 우리의 친구 chatGPT

+ Recent posts