使用Go 的syscall.Call() 函數存取Windows 空閒時間
在Go 中,存取Windows 系統資訊(如空閒時間)需要使用" syscall」包,它提供對DLL 函數的存取。由於 Golang 文件主要針對 Linux,因此取得空閒時間需要在本機執行 godoc。
使用syscall.Call() 取得空閒時間
取得空閒時間透過GetLastInputInfo(),依照下列步驟操作:
- “syscall”和“unsafe”套件。
- 使用 syscall.MustLoadDLL("user32.dll") 載入 user32 DLL .
- 使用 user32.MustFindProc("GetLastInputInfo") 取得 GetLastInputInfo 函數的位址。
- 建立一個與 LastInputInfo 結構體佈局相同的結構體,但將 int 欄位轉換為 int32。
- 使用 lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo)) 將結構體的 cbSize 欄位設定為其大小。
-
使用指向結構體的指標呼叫 GetLastInputInfo:
<code class="go">r1, _, err := getLastInputInfo.Call(
uintptr(unsafe.Pointer(&lastInputInfo)))</code>
登入後複製
- 檢查 r1 傳回值以毫秒為單位的空閒時間。
附加說明:
- 使用Unicode (W) 後綴呼叫ANSI 和Unicode 函數,並使用syscall 的UTF-16 轉換函數以獲得最佳結果。
- 了解 syscall.Call() 參數和回傳值為 uintptr。
- 透過忽略 Windows 上的 _ 傳回值來尊重 ABI 要求。
以上是如何使用 Go 的 syscall.Call() 擷取 Windows 空閒時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!