1.需要使用jna.jar包(jintellitype-1.3.9)调用dll
2.需要使用c++生成64位的dll,自己编写的,网上找不到
文件下载:PowerDll.zip-Java文档类资源-CSDN下载
这是windowsAPI提供的函数,其中BatteryLifePercent是获取电量
typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE SystemStatusFlag;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
}
开始正文
1.加载jna.jar包,把PowerDll.dll放在文件夹src和lib文件夹同级的目录里,或者在java加载PowerDll.dll时使用绝对路径。
2.在java中创建接口类CLibrary
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("PowerDll",CLibrary.class);
int getACLineStatus();
int getBatteryFlag();
int getBatteryLifePercent();
int getSystemStatusFlag();
int getBatteryLifeTime();
int getBatteryFullLifeTime();
}
3.main函数
public static void main(String[] args) {
int Battery = CLibrary.INSTANCE.getACLineStatus();
System.out.println(Battery); //这个是否处于充电状态
Battery = CLibrary.INSTANCE.getBatteryFlag();
System.out.println(Battery);
Battery = CLibrary.INSTANCE.getBatteryLifePercent();
System.out.println(Battery); //这个是电池的电量
Battery = CLibrary.INSTANCE.getSystemStatusFlag();
System.out.println(Battery);
Battery = CLibrary.INSTANCE.getBatteryLifeTime();
System.out.println(Battery);
Battery = CLibrary.INSTANCE.getBatteryFullLifeTime();
System.out.println(Battery);
}