ホームページ >バックエンド開発 >Golang >Go を使用して Windows アイドル時間を取得する方法

Go を使用して Windows アイドル時間を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 13:45:02878ブラウズ

How to Retrieve Windows Idle Time Using Go?

Go を使用した Windows アイドル時間へのアクセス

このガイドでは、Golang を使用して Windows システムのアイドル時間を取得するソリューションを提供します。

Go で Windows API にアクセスする

Windows 固有のシステム情報を取得するには、syscall パッケージを使用する必要があります。 API にアクセスするには、godoc を取得してローカルで実行する必要があります。

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

次に、Web ブラウザで http://127.0.0.1:6060/ を開きます。

最後の入力情報の取得

Go には GetLastInputInfo() 用の直接 API がありません。ただし、DLL から直接呼び出すこともできます:

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

構造体のセットアップ

戻り値を保持する構造体を定義します:

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

構造体のサイズで cbSize フィールドを初期化します:

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

GetLastInputInfo を呼び出す

構造体へのポインタを関数に渡します:

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

忘れずに syscall と unsafe をインポートしてください。

追加のヒント

  • Unicode バージョンの API 関数 (W サフィックスなど) を使用してください。最適な結果を得るための syscall の UTF-16 変換関数。
  • syscall.Call() のすべての引数と戻り値は uintptr です。
  • Windows ではアンダースコア (_) の戻り値は使用されません。

以上がGo を使用して Windows アイドル時間を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。