개발/go

Golang으로 화면보호기와 절전 모드 방지하기

xwing 2025. 3. 24. 16:23

Go 언어(Golang)를 사용해 시스템이 화면보호기나 절전 모드로 들어가지 않도록 설정하는 방법을 만들어 볼려고합니다. 예를 들어, 장시간 프레젠테이션을 할 때 화면이 꺼지지 않게 하고 싶을 때 유용하겠죠.

Windows 환경에서만 동작합니다.

Windows에서 화면보호기 방지하기

Windows에서는 시스템의 유휴 상태를 제어하기 위해 SetThreadExecutionState라는 API를 호출할 수 있습니다. 이를 Go로 구현하려면 golang.org/x/sys/windows 패키지를 활용하면 됩니다. 아래는 간단한 예제 코드입니다.

코드 예제

 
package main
 
import ( "fmt" "time" "golang.org/x/sys/windows" )
 
func preventScreenSaver() {
   // 상태 플래그 설정
   const (
        ES_CONTINUOUS = 0x80000000 // 지속적으로 상태 유지
        ES_SYSTEM_REQUIRED = 0x00000001 // 시스템 유휴 방지
        ES_DISPLAY_REQUIRED = 0x00000002 // 디스플레이 꺼짐 방지
   )
   // 시스템 상태 설정
   windows.SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED)
}
 
func main() {
     fmt.Println("화면보호기 및 절전 모드 방지 시작...")
 
     // 30초마다 상태를 유지
     for  {
           preventScreenSaver() time.Sleep(30 * time.Second)
     }
}
 

설치 방법

위 코드를 실행하려면 먼저 필요한 패키지를 설치해야 합니다. 터미널에서 다음 명령어를 실행하세요:

bash
 
 > go get golang.org/x/sys/windows
 

코드 설명

  • SetThreadExecutionState: Windows API로, 시스템의 유휴 상태를 제어합니다.
  • ES_CONTINUOUS: 설정이 지속되도록 유지합니다.
  • ES_SYSTEM_REQUIRED: 시스템이 절전 모드로 전환되지 않게 합니다.
  • ES_DISPLAY_REQUIRED: 디스플레이가 꺼지지 않도록 합니다.
  • 주기적 호출: 설정이 유지되려면 일정 간격(예: 30초)으로 함수를 호출해야 합니다.

프로그램을 실행하면 콘솔에 "화면보호기 및 절전 모드 방지 시작..." 메시지가 출력되고, 화면이 꺼지거나 화면보호기가 실행되지 않습니다.

 
반응형

'개발 > go' 카테고리의 다른 글

Go(golang) 테트리스  (0) 2025.04.07
[golang] Covid19 정보 조회  (0) 2021.01.27
[golnag] 기초 excelize  (0) 2021.01.18