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

Go の syscall.Call() を使用して Windows アイドル時間を取得する方法?

DDD
リリース: 2024-11-03 08:41:02
オリジナル
962 人が閲覧しました

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

Go の syscall.Call() 関数を使用した Windows アイドル時間へのアクセス

Go では、アイドル時間などの Windows システム情報にアクセスするには、「 syscall」パッケージ。DLL 関数へのアクセスを提供します。 Golang ドキュメントは Linux に焦点を当てているため、アイドル時間を取得するには、godoc をローカルで実行する必要があります。

Using syscall.Call() to Retrieve Idle Time

アイドル時間を取得するにはGetLastInputInfo() 経由で、次の手順に従います。

  1. 「syscall」パッケージと「unsafe」パッケージをインポートします。
  2. syscall.MustLoadDLL("user32.dll") を使用して user32 DLL をロードします。 .
  3. user32.MustFindProc("GetLastInputInfo") を使用して GetLastInputInfo 関数のアドレスを取得します。
  4. LastInputInfo 構造体と同じレイアウトで、int フィールドが int32 に変換された構造体を作成します。
  5. lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo)) を使用して、構造体の cbSize フィールドをそのサイズに設定します。
  6. 構造体へのポインターを使用して GetLastInputInfo を呼び出します。

    <code class="go">r1, _, err := getLastInputInfo.Call(
       uintptr(unsafe.Pointer(&lastInputInfo)))</code>
    ログイン後にコピー
  7. アイドル時間の r1 戻り値をミリ秒単位で確認します。

追加メモ:

  • ANSI 関数と Unicode 関数の両方を Unicode (W) サフィックスで呼び出し、最適な結果を得るために syscall の UTF-16 変換関数を使用します。
  • syscall.Call() の引数と戻り値が uintptr であることを理解してください。
  • Windows では _ 戻り値を無視して、ABI 要件を尊重します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート