【问题标题】:Check Idle Time when running as a Windows Service作为 Windows 服务运行时检查空闲时间
【发布时间】:2012-01-02 18:36:09
【问题描述】:

使用 win32api.GetLastInputInfo() 是确定用户空闲时间的简单方法。但是,当作为 SERVICE 运行时,这不适用(总是返回 0)。

有人知道 WINDOWS SERVICE 确定最后一次按键/鼠标活动的简单方法吗? (或其他确定空闲时间的有效方法)

【问题讨论】:

  • 哪个用户?如今在 Windows 上,这不一定只有坐在电脑前的用户(想想 rdesktop ......)

标签: python winapi windows-services python-idle


【解决方案1】:

不是在 Python 中,但 http://www.codeproject.com/KB/DLL/trackuseridle.aspx 中提出的方法看起来很有趣。

[编辑] 它的代码是一个标准的 C DLL,所以你应该能够将它与 ctypes 一起使用。使用SetWindowsHookEx 编写 C 代码的方式意味着您可以直接用 Python + pywin32 重写它。请参阅 stackoverflow.com/questions/6458812 和 python-forum.org/pythonforum/viewtopic.php?f=2&t=11154 了解更多信息(第一个链接提到了无需编写 DLL 即可获得的各种事件,其他显示一个python示例)。

【讨论】:

  • 从链接看来,他们正在拦截键盘/鼠标低级中断。上面的DLL可以在Python中使用吗?
  • @Ian 我在上面的答案中添加了相关信息。抱歉,手头没有 Windows 机器来尝试放置一些测试代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2021-11-03
  • 2012-09-20
  • 1970-01-01
相关资源
最近更新 更多