Maison  >  Article  >  développement back-end  >  Comment récupérer le temps d'inactivité de Windows à l'aide de Go ?

Comment récupérer le temps d'inactivité de Windows à l'aide de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 13:45:02871parcourir

How to Retrieve Windows Idle Time Using Go?

Accès au temps d'inactivité de Windows avec Go

Ce guide fournit une solution pour récupérer le temps d'inactivité d'un système Windows à l'aide de Golang.

Accéder à l'API Windows dans Go

Obtenir des informations système spécifiques à Windows nécessite l'utilisation du package syscall. Pour accéder à l'API, vous devrez obtenir godoc et l'exécuter localement :

go get golang.org/x/tools/cmd/godoc
godoc --http=:6060

Ensuite, ouvrez http://127.0.0.1:6060/ dans un navigateur Web.

Obtenir les dernières informations d'entrée

Go n'a pas d'API directe pour GetLastInputInfo(). Cependant, vous pouvez l'appeler directement depuis la DLL :

<code class="go">user32 := syscall.MustLoadDLL("user32.dll")
getLastInputInfo := user32.MustFindProc("GetLastInputInfo")</code>

Configurer une structure

Définir une structure pour contenir la valeur de retour :

<code class="go">type LastInputInfo struct {
    cbSize uint32
    dwTime  uint32
}</code>

Initialisez le champ cbSize avec la taille de la structure :

<code class="go">var lastInputInfo LastInputInfo
lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo))</code>

Appel de GetLastInputInfo

Passez un pointeur vers la structure à la fonction :

<code class="go">_, _, err := getLastInputInfo.Call(
    uintptr(unsafe.Pointer(&lastInputInfo))))
if err != nil {
    panic("error getting last input info: " + err.Error())
}</code>

N'oubliez pas d'importer les appels système et non sécurisés.

Conseils supplémentaires

  • Utilisez les versions Unicode des fonctions API (par exemple, le suffixe W) et Fonctions de conversion UTF-16 dans syscall pour des résultats optimaux.
  • Tous les arguments et valeurs de retour pour syscall.Call() sont uintptr.
  • Le retour de trait de soulignement (_) n'est pas utilisé sous Windows.

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