WindowsでPythonを使用してシステムがアイドル状態になっているかどうかを検出するにはどうすればよいですか? これは既にbeforeと尋ねられていますが、モジュールにはGetLastInputInfo
と思われません。Pythonを使用してアイドル時間を検出する
16
A
答えて
2
実は、あなたはcytpes
ライブラリ経由GetLastInputInfo
にアクセスすることができます。それは、システム全体にわたるが、唯一と呼ばれるセッションについてのアイドル情報を提供しないよう
import ctypes
GetLastInputInfo = ctypes.windll.User32.GetLastInputInfo # callable function pointer
これは、あなたがが望むものではないかもしれません関数。 See MSDN docs.
また、check if the system is locked、またはスクリーンセーバーが開始されている場合もあります。
18
from ctypes import Structure, windll, c_uint, sizeof, byref
class LASTINPUTINFO(Structure):
_fields_ = [
('cbSize', c_uint),
('dwTime', c_uint),
]
def get_idle_duration():
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = sizeof(lastInputInfo)
windll.user32.GetLastInputInfo(byref(lastInputInfo))
millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime
return millis/1000.0
アイドル時間を秒単位で取得するには、get_idle_duration()
を呼び出します。
6
はGetLastInputInfo
はpywin32で利用可能になりましたように思える:
win32api.GetLastInputInfo()
は、トリックを行い、最後のユーザ入力アクションからタイマーティックを返します。
プログラム例import time
import win32api
for i in range(10):
print(win32api.GetLastInputInfo())
time.sleep(1)
でその他
一方がキーを押した場合、スクリプトは、印刷された番号の変更を眠っている間/マウスを移動させます。
1
@ FogleBirdの回答はかなりクールで働いていますが、急いで私はそれがどのように動作するか分からなかったので、ここでは少しのテスト例です。スレッドが開始され、最後のアイドル時間が10秒ごとに検索されます。この時間内に移動が行われた場合は、それが印刷されます。
from ctypes import Structure, windll, c_uint, sizeof, byref
import threading
//Print out every n seconds the idle time, when moving mouse, this should be < 10
def printit():
threading.Timer(10.0, printit).start()
print get_idle_duration()
class LASTINPUTINFO(Structure):
_fields_ = [
('cbSize', c_uint),
('dwTime', c_uint),
]
def get_idle_duration():
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = sizeof(lastInputInfo)
windll.user32.GetLastInputInfo(byref(lastInputInfo))
millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime
return millis/1000.0
printit()
3
import win32api
def getIdleTime():
return (win32api.GetTickCount() - win32api.GetLastInputInfo())/1000.0
関連する問題
- 1. VBアイドル時間を検出する
- 2. タブ間でもアイドル時間を検出できますか?
- 3. DispatcherTimerを使用したアイドル時間 - 動作しません。
- 4. レッグシステムのアイドル時間
- 5. ユーザのアイドル時間をモニタする
- 6. アイドルを使用したPythonのサブプロセス
- 7. アイドルasyncioイベントループを検出する
- 8. Pythonを使用したCSVファイルの時間平均の検索
- 9. アイドル時間の後にマウスカーソルを隠す
- 10. RTOSでのアイドル時間
- 11. Linuxのプロセスのアイドル時間
- 12. MediaWIkiセッションのアイドル時間
- 13. jQueryを使用して時間範囲を検証する
- 14. どのアルゴリズムを使用して時間的パターンを検出できるか?
- 15. Winformsアプリケーションを検出する方法は一定の時間アイドル状態になっています
- 16. Pythonを使用してDlibの顔検出器を使用して複数の顔を検出する
- 17. Pythonでdatetimeモジュールを使用して時間を比較する
- 18. python seleniumを使用して時間データをスクラップする
- 19. javascript/Jqueryでwebworkerを使用してアイドル時間を検出するにはどうすればよいですか?
- 20. Windows phone 7 Appアイドル検出
- 21. Linux上でユーザーがアイドル(ユーザー入力なし)の時間をグローバルに検出するか、より良いクロスプラットフォーム
- 22. ループ時のアイドル時間の挿入
- 23. Pythonを使用してHTMLページでJavaScriptを検出する
- 24. Pythonを使用してSVMクラシファイアヘルメット検出をトレーニングする方法
- 25. Pythonを使用してWindowsでマウスのクリックを検出する
- 26. DropboxのPython APIを使用して変更を検出する
- 27. pythonを使用してGoogle検索スニペットを抽出するbeautifulsoup
- 28. RHEL 7用アイドルPython
- 29. 別のタブでjavascriptまたはPHPを使用してユーザーのアイドル時間を取得する方法
- 30. Pythonを使用した異常検出
それはなぜあなたが再び求めている、前に頼まれたので?あなたは何が変わって別の答えが出ると思いますか? –
多分、誰かがそれに答えることができる人がいますが、古い質問は年齢と曖昧さに埋もれています。誰かの古い質問にどうやって "バンプ"することができますか? –
以前に尋ねられたとき、その答えはマウスクリックの検出に関するものでしたが、それはその質問に対する答えの近くにありませんでした! – Badri