如何使用Java检测PC已空闲30秒?如何使用Java检测PC已空闲30秒?
EDITED
闲置我的意思是,有没有用户活动。用户在30秒内不做任何事情。我希望做一个像Windows一样的应用程序,它可以检测到用户什么都不做,并进入stad-by。
如何使用Java检测PC已空闲30秒?如何使用Java检测PC已空闲30秒?
EDITED
闲置我的意思是,有没有用户活动。用户在30秒内不做任何事情。我希望做一个像Windows一样的应用程序,它可以检测到用户什么都不做,并进入stad-by。
直接从java中是不可能的。你必须找到一些本地库,并为此创建一个JNI包装器。
不可能按要求,但您可以使用java.lang.management API创建解决方法。 JNI实现也可以在javaworld上找到。
不容易看看OperatingSystemMXBean方法getSystemLoadAverage()仅在Java 6之后可用,您可以保留它的跟踪,并且如果它在一段时间内是相同的,则确定pc是空闲的。
这假定空闲处于空闲CPU而言
OperatingSystemMXBean operatingSystemMxBean = ManagementFactory.getOperatingSystemMXBean();
我遇到过使用JNA来检测系统空闲时间的优秀示例。 Java Native Access (JNA)是一个库,它提供对Java Native Interface (JNI)的访问,而不需要您实际编写本机代码。
Here's the example这是非常接近你的要求。
你能以更具体的方式更改你的问题吗? – rogeriopvl 2009-03-05 10:21:40
您需要定义'空闲' - 是否没有用户输入,没有磁盘活动,没有进程运行,平均CPU负载或什么? – Skizz 2009-03-05 10:25:16
“空闲”甚至是什么意思?没有/很少的CPU活动(多处理器系统)?没有用户输入?没有网络流量?没有硬盘I/O? – sleske 2009-03-05 10:26:07