Maison >développement back-end >Golang >Comment obtenir le temps d'inactivité de Windows dans Go ?

Comment obtenir le temps d'inactivité de Windows dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 21:44:02361parcourir

How to Get Windows Idle Time in Go?

Comment acquérir le temps d'inactivité de Windows dans Go : un guide complet

Dans Go, acquérir le temps d'inactivité d'un système Windows peut sembler intimidant . Cet article fournit une solution détaillée, offrant un aperçu de l'environnement Go et utilisant l'API Windows pour cette tâche.

En naviguant sur le site Web Go et en utilisant l'outil godoc avec l'indicateur "--http=:6060", comme le suggère la réponse, nous pouvons accéder à la documentation complète de tous les packages Go.

Le package syscall est d'une importance primordiale, qui englobe les fonctions d'accès aux DLL. Bien que Go ne dispose pas d'API pour la fonction spécifique GetLastInputInfo(), il est possible de l'appeler directement depuis la DLL.

Pour accéder aux structures, assurez-vous que tous les champs sont déclarés plats et que tous les champs int sont convertis en int32 pour assurer la compatibilité sur Windows 64 bits.

L'extrait de code ci-dessous décrit les étapes à suivre pour acquérir du temps d'inactivité à l'aide de 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>

En utilisant ces techniques, vous pouvez efficacement acquérir Windows inactif temps d'utilisation de Go, vous permettant de développer des applications robustes et efficaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn