#define _WIN32_WINNT 0x0500
#define WINVER 0x0500 //GetLastInputInfo needs Win2K
#include <windows.h>
#include <iostream>
static void testLastInput()
{
LASTINPUTINFO lpi;
lpi.cbSize = sizeof(lpi);
printf("LASTINPUTINFO.cbSize=%d\n",lpi.cbSize);//LASTINPUTINFO.cbSize=8
int last_input_time=0;
for(int idle_time=0;idle_time<5;)
{
GetLastInputInfo(&lpi);
if(lpi.dwTime==last_input_time){
idle_time++;
}else{
last_input_time=lpi.dwTime;
idle_time=0;
}
printf("idle_time=%d seconds\n",idle_time);
Sleep(1000);
}
}
int main(int n_args, char *args[])
{
testLastInput();
return 0;
}
import com.sun.jna.Native;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.win32.W32APIOptions;
public class GetLastInputInfo {
public static void main(String[] args) throws Exception {
Win32.LastInputInfo lastInputInfo = new Win32.LastInputInfo();
int last_input_time=0;
for(int idle_time=0;idle_time<5;){
Win32.INSTANCE.GetLastInputInfo(lastInputInfo);
if(lastInputInfo.dwTime==last_input_time){
idle_time++;
}else{
last_input_time=lastInputInfo.dwTime;
idle_time=0;
}
System.out.println("空闲: "+idle_time+" 秒");
Thread.sleep(1000);
}
}
public interface Win32 extends User32 {
public static final Win32 INSTANCE = (Win32)Native.loadLibrary("user32", Win32.class, W32APIOptions.DEFAULT_OPTIONS);
public static class LastInputInfo extends Structure {
public int cbSize = 8;
public int dwTime;
}
public boolean GetLastInputInfo(LastInputInfo lastInputInfo);
}
}