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 |