如何使用ruby获取window os系统空闲时间?

时间:2010-01-26 18:54:38

标签: ruby winapi

我有一个ruby脚本。我想知道系统闲置了多长时间(即没有用户交互 - 屏幕保护程序激活的时间基于)。

我相信我可以通过win32api使用user32.dll和GetLastInputInfo在ruby中执行此操作,但我无法弄清楚如何...任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

以下是调用GetLastInputInfo的示例。但是,我没有研究那个API,看看它是否真的给了你想要的信息。

require "Win32API"

api = Win32API.new( 'user32', 'GetLastInputInfo', ['P'], 'I')
# match the structure LASTINPUTINFO. First 4 byte int is size of struct
s = [8, 0].pack('l*')
api.call( s )
a = s.unpack('l*')
puts a

答案 1 :(得分:0)

看起来你想要做的事情已经为Linux做了:

http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/

但至于Windows,我能找到的最接近的东西是C#...我没有一台Windows机器可以破解它,但它可以很好地告诉你如何与GetLastInputInfo进行交互:

http://dataerror.blogspot.com/2005/02/detect-windows-idle-time.html

答案 2 :(得分:0)

根据Mark Wilkins的回答,我创建了一些脚本来记录用户的空闲时间。

https://gist.github.com/Largo/11216868