C和Java JNA获取系统空闲时间 --GetLastInputInfo 函数

#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);
	}

}


Java 所需的JNA jar资源在这里 jars.rar


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值