Heim >Backend-Entwicklung >Golang >Wie bekomme ich die Windows-Leerlaufzeit in Go?

Wie bekomme ich die Windows-Leerlaufzeit in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 21:44:02361Durchsuche

How to Get Windows Idle Time in Go?

So ermitteln Sie die Windows-Leerlaufzeit in Go: Eine umfassende Anleitung

In Go kann die Erfassung der Leerlaufzeit eines Windows-Systems entmutigend erscheinen . Dieser Artikel bietet eine detaillierte Lösung, bietet Einblicke in die Go-Umgebung und nutzt die Windows-API für diese Aufgabe.

Durch Navigieren auf der Go-Website und Verwendung des Godoc-Tools mit der Flagge „--http=:6060“ Wie aus der Antwort hervorgeht, können wir auf die umfassende Dokumentation aller Go-Pakete zugreifen.

Von größter Bedeutung ist das Syscall-Paket, das Funktionen für den Zugriff auf DLLs umfasst. Während Go für die spezifische Funktion GetLastInputInfo() eine API fehlt, ist es möglich, sie direkt aus der DLL aufzurufen.

Stellen Sie beim Zugriff auf Strukturen sicher, dass alle Felder flach deklariert sind und alle int-Felder in int32 konvertiert werden Stellen Sie die Kompatibilität unter 64-Bit-Windows sicher.

Der folgende Codeausschnitt beschreibt die Schritte zum Erfassen der Leerlaufzeit mit 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>

Durch die Verwendung dieser Techniken können Sie den Windows-Leerlauf effektiv erfassen Zeit mit Go und befähigt Sie, robuste und effiziente Anwendungen zu entwickeln.

Das obige ist der detaillierte Inhalt vonWie bekomme ich die Windows-Leerlaufzeit in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn