Heim > Backend-Entwicklung > Golang > Wie kann ich die Windows-Leerlaufzeit mit syscall.Call() von Go abrufen?

Wie kann ich die Windows-Leerlaufzeit mit syscall.Call() von Go abrufen?

DDD
Freigeben: 2024-11-03 08:41:02
Original
1004 Leute haben es durchsucht

How to Retrieve Windows Idle Time Using Go's syscall.Call()?

Zugriff auf die Windows-Leerlaufzeit mit der Funktion syscall.Call() von Go

In Go erfordert der Zugriff auf Windows-Systeminformationen wie die Leerlaufzeit die Verwendung der Funktion „ syscall“-Paket, das Zugriff auf DLL-Funktionen bietet. Da sich die Golang-Dokumentation auf Linux konzentriert, muss zum Abrufen der Leerlaufzeit godoc lokal ausgeführt werden.

Verwenden von syscall.Call() zum Abrufen der Leerlaufzeit

Um die Leerlaufzeit abzurufen Führen Sie über GetLastInputInfo() die folgenden Schritte aus:

  1. Importieren Sie die Pakete „syscall“ und „unsafe“.
  2. Laden Sie die user32-DLL mit syscall.MustLoadDLL("user32.dll") .
  3. Erhalten Sie die Adresse der GetLastInputInfo-Funktion mit user32.MustFindProc("GetLastInputInfo").
  4. Erstellen Sie eine Struktur mit dem gleichen Layout wie die LastInputInfo-Struktur, aber mit int32 konvertierten int-Feldern.
  5. Setzen Sie das cbSize-Feld der Struktur mit lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo)) auf seine Größe.
  6. Rufen Sie GetLastInputInfo mit einem Zeiger auf die Struktur auf:

    <code class="go">r1, _, err := getLastInputInfo.Call(
       uintptr(unsafe.Pointer(&lastInputInfo)))</code>
    Nach dem Login kopieren
  7. Überprüfen Sie den r1-Rückgabewert für die Leerlaufzeit in Millisekunden.

Zusätzliche Hinweise:

  • Rufen Sie sowohl ANSI- als auch Unicode-Funktionen mit dem Suffix Unicode (W) auf und verwenden Sie die UTF-16-Konvertierungsfunktionen von syscall für optimale Ergebnisse.
  • Verstehen Sie, dass syscall.Call()-Argumente und -Rückgaben uintptr sind.
  • Beachten Sie die ABI-Anforderungen, indem Sie den Rückgabewert _ unter Windows ignorieren.

Das obige ist der detaillierte Inhalt vonWie kann ich die Windows-Leerlaufzeit mit syscall.Call() von Go abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage