首頁 >後端開發 >Golang >如何在 Go 中取得 Windows 空閒時間?

如何在 Go 中取得 Windows 空閒時間?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 21:44:02361瀏覽

How to Get Windows Idle Time in Go?

如何在Go 中取得Windows 空閒時間:綜合指南

在Go 中,取得Windows 系統的空閒時間可能看起來令人興奮畏懼。本文提供了詳細的解決方案,深入了解 Go 環境並利用 Windows API 來完成此任務。

透過導航 Go 網站並使用帶有「--http=:6060」標誌的 godoc 工具,正如答案所建議的,我們可以存取所有 Go 套件的綜合文件。

最重要的是 syscall 套件,它包含用於存取 DLL 的函數。雖然 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