C语言电池助手
按照课本学习C语言一样寻常都只涉及数据范例、指针、数组、链表等如许一系列的底子知识
但是在寒假里出于爱好和猛烈的好奇
笔者突发奇想想知道可否用C语言访问体系的电池参数
由此笔者查阅资料以后实验写了一个托钵人版的电池助手
时至暑假,笔者忽然想起了这个太古步伐,决定把它收录进自己博客中
代码
#include
#include
#include
void gotoxy(int x,int y)
{
COORD pos;
HANDLE hOutput;
pos.X=x;
pos.Y=y;
hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput,pos);
}
int main(void)
{
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
system("color F0");
system("mode con cols=40 lines=8");
gotoxy(5,1);
printf("是否连通电源:%s",sps.ACLineStatus==0?"否":"是");
gotoxy(5,2);
printf("电池百分比:%d%%",sps.BatteryLifePercent);
gotoxy(5,3);
switch(sps.BatteryFlag){
case 0:
printf("电池状态:低电量");
break;
case 1:
printf("电池状态:高电量");
break;
case 4:
printf("电池状态:极低电量");
break;
case 8:
printf("电池状态:充电中");
break;
case 128:
printf("未检测到电池!");
break;
case 255:
printf("无法读取电池状态!");
break;
}
if(sps.ACLineStatus==0){
int h,s;
h=sps.BatteryLifeTime/3600;
s=(sps.BatteryLifeTime-h*3600)/60;
gotoxy(5,4);
printf("电池剩余使用时间:%d时%d分",h,s);
}
else{
gotoxy(5,4);
printf("电池剩余使用时间:您已接通电源!");
}
system("pause");
return 0;
}
此中gotoxy是对光标的移动
而焦点代码则是main函数中的
最最关键的则是由体系界说的布局体:
SYSTEM_POWER_STATUS sps;
GetSystemPowerStatus(&sps);
而后便是调用该布局体中的各项参数:
ACLineStatus
BatteryLifePercent
BatteryFlag
BatteryLifeTime
感想
到这里可以发现
实现访问和表现电池参数不必要自己计划步伐和算法
无非只是必要知道C语言中已界说好的布局体:
SYSTEM_POWER_STATUS
而笔者的这段代码也无非只是可以实现一些最底子的功能
仅供学习娱乐而已
其仍然是一个较为底子的控制台步伐
实在笔者乃至想在低电量(小于20%)时调用 Beep() 函数
然而 Beep() 的蜂鸣声总有些莫名的魔性
笔者不得不放弃了这个想法 ! |