>백엔드 개발 >Golang >Go에서 Windows 유휴 시간을 얻는 방법은 무엇입니까?

Go에서 Windows 유휴 시간을 얻는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 21:44:02359검색

How to Get Windows Idle Time in Go?

Go에서 Windows 유휴 시간을 획득하는 방법: 종합 가이드

Go에서 Windows 시스템의 유휴 시간을 획득하는 것이 어려워 보일 수 있습니다. . 이 기사에서는 Go 환경에 대한 통찰력을 제공하고 이 작업에 Windows API를 활용하는 자세한 솔루션을 제공합니다.

Go 웹 사이트를 탐색하고 "--http=:6060" 플래그와 함께 godoc 도구를 사용하면, 답변에서 제안한 대로 모든 Go 패키지의 포괄적인 문서에 액세스할 수 있습니다.

가장 중요한 것은 DLL 액세스 기능을 포함하는 syscall 패키지입니다. Go에는 특정 함수 GetLastInputInfo()에 대한 API가 없지만 DLL에서 직접 호출할 수 있습니다.

구조에 액세스하려면 모든 필드가 flat으로 선언되고 모든 int 필드가 int32로 변환되어 있어야 합니다. 64비트 Windows에서 호환성을 보장합니다.

아래 코드 조각에서는 GetLastInputInfo()를 사용하여 유휴 시간을 획득하는 단계를 간략하게 설명합니다.

<code class="go">import (
    "syscall"
    "unsafe"
)

// GetWindowsIdleTime retrieves the idle time of a Windows system
func GetWindowsIdleTime() (idleTime uint32, err error) {

    // Load the user32 DLL and locate the GetLastInputInfo procedure
    user32, err := syscall.LoadDLL("user32.dll")
    if err != nil {
        return
    }
    getLastInputInfo, err := user32.FindProc("GetLastInputInfo")
    if err != nil {
        return
    }

    // Define the structure to receive the input information
    var lastInputInfo struct {
        cbSize uint32
        dwTime uint32
    }
    // Set the structure size
    lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo))

    // Call the GetLastInputInfo function
    r1, _, err := getLastInputInfo.Call(uintptr(unsafe.Pointer(&lastInputInfo)))
    if r1 == 0 {
        err = fmt.Errorf("error getting last input info: %w", err)
        return
    }

    // Return the input idle time
    idleTime = lastInputInfo.dwTime
    return
}</code>

이러한 기술을 활용하면 Windows 유휴 시간을 효과적으로 획득할 수 있습니다. Go를 사용하면 강력하고 효율적인 애플리케이션을 개발할 수 있습니다.

위 내용은 Go에서 Windows 유휴 시간을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.