Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan Masa Terbiar Windows Menggunakan Go?

Bagaimana untuk Mendapatkan Masa Terbiar Windows Menggunakan Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 13:45:02880semak imbas

How to Retrieve Windows Idle Time Using Go?

Mengakses Windows Idle Time dengan Go

Panduan ini menyediakan penyelesaian untuk mendapatkan semula masa terbiar sistem Windows menggunakan Golang.

Mengakses Windows API dalam Go

Mendapatkan Maklumat sistem khusus Windows memerlukan penggunaan pakej syscall. Untuk mengakses API, anda perlu mendapatkan godoc dan menjalankannya secara setempat:

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

Kemudian, buka http://127.0.0.1:6060/ dalam penyemak imbas web.

Mendapatkan Maklumat Input Terakhir

Go tidak mempunyai API langsung untuk GetLastInputInfo(). Walau bagaimanapun, anda boleh memanggilnya terus dari DLL:

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

Menyediakan Struktur

Tentukan struktur untuk menyimpan nilai pulangan:

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

Mulakan medan cbSize dengan saiz struktur:

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

Memanggil GetLastInputInfo

Lepaskan penuding kepada struktur ke fungsi:

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

Ingat untuk mengimport syscall dan tidak selamat .

Tambahan Petua

  • Gunakan versi Unicode fungsi API (cth., akhiran W) dan fungsi penukaran UTF-16 dalam syscall untuk hasil yang optimum.
  • Semua argumen dan nilai pulangan untuk syscall .Panggilan() adalah uintptr.
  • Pulangan garis bawah (_) tidak digunakan pada Windows.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Masa Terbiar Windows Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn