Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan Windows Idle Time dalam Go?

Bagaimana untuk Mendapatkan Windows Idle Time dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 21:44:02361semak imbas

How to Get Windows Idle Time in Go?

Cara Memperoleh Masa Terbiar Windows dalam Go: Panduan Komprehensif

Dalam Go, memperoleh masa terbiar sistem Windows mungkin kelihatan menakutkan . Artikel ini menyediakan penyelesaian terperinci, menawarkan cerapan tentang persekitaran Go dan menggunakan API Windows untuk tugasan ini.

Dengan menavigasi tapak web Go dan menggunakan alat godoc dengan bendera "--http=:6060", seperti yang dicadangkan oleh jawapannya, kami boleh mengakses dokumentasi komprehensif bagi semua pakej Go.

Yang paling penting ialah pakej syscall, yang merangkumi fungsi untuk mengakses DLL. Walaupun Go tidak mempunyai API untuk fungsi tertentu GetLastInputInfo(), adalah mungkin untuk memanggilnya terus daripada DLL.

Untuk mengakses struktur, pastikan semua medan diisytiharkan rata dan sebarang medan int ditukar kepada int32 kepada memastikan keserasian pada Windows 64-bit.

Coretan kod di bawah menggariskan langkah-langkah untuk memperoleh masa terbiar menggunakan 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>

Dengan menggunakan teknik ini, anda boleh memperoleh Windows melahu dengan berkesan masa menggunakan Go, memperkasakan anda untuk membangunkan aplikasi yang mantap dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Windows Idle Time dalam 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