Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读取浮动/双模式下的笔记本电脑电池状态_C++_Winapi_Power Management - Fatal编程技术网

C++ 读取浮动/双模式下的笔记本电脑电池状态

C++ 读取浮动/双模式下的笔记本电脑电池状态,c++,winapi,power-management,C++,Winapi,Power Management,我有一个在Windows中读取电池状态的程序,如下所示(简化代码): #包括 #包括 使用名称空间std; int main(int argc,char*argv[]){ 系统电源状态spsPwr; if(GetSystemPowerStatus和spsPwr)){ 正如你所说,Windows API。还有,正如你所暗示的,.NET 这意味着,要使用浮点值,您必须使用.NET。也就是说,.NET值介于0.0和1.0之间,并且从文档中不清楚您是否实际获得了更高的精度。该工具的统计信息是“”,因此我

我有一个在Windows中读取电池状态的程序,如下所示(简化代码):

#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
系统电源状态spsPwr;
if(GetSystemPowerStatus和spsPwr)){

正如你所说,Windows API。还有,正如你所暗示的,.NET


这意味着,要使用浮点值,您必须使用.NET。也就是说,.NET值介于
0.0
1.0
之间,并且从文档中不清楚您是否实际获得了更高的精度。

该工具的统计信息是“”,因此我怀疑它是否使用了的直接值


就我个人而言,我很难想象浮点精度会有什么好处,但无论如何,你可以用它来看看他们是如何做到的,或者你也可以问他们是如何做到的。

NET版本实际上没有为你提供更多的精度。它只是将
电池寿命百分比
字节值除以100.0,然后返回下面是.NET中getter的内容

public float BatteryLifePercent
{
    get
    {
        this.UpdateSystemPowerStatus();
        float num = ((float) this.systemPowerStatus.BatteryLifePercent) / 100f;
        if (num <= 1f)
        {
            return num;
        }
        return 1f;
    }
}
public float电池寿命百分比
{
得到
{
this.updateSystemStatus();
float num=((float)this.systemPowerStatus.BatteryLifePercent)/100f;

如果(num您可以使用WMI获取此信息。请尝试使用
BatteryFullChargedCapacity
BatteryStatus
类都是
root\WMI
命名空间的一部分

要获得以百分比表示的剩余电池电量,只需使用
RemainingCapacity
(电池状态)和
FullChargedCapacity
(电池FullChargedCapacity)属性即可

剩余的电池电量百分比为

(剩余容量*100)/完全充电容量

例如,如果FullChargedCapacity属性报告一个
5266
值,而RemainingCapacity报告一个
5039
,则重用率将为
9568932776%

如果你不知道如何从C++访问WMI读取这些文章


您的意思是希望获得更高的精度?还是希望BatteryLife超过1?请使用Stack Overflow的post工具正确上传该图像;您发布链接的图像不能进行热链接。@Tomalak:我想获得显示小数点的读数(例如22.5、87.5).由于我的代表,我不允许发布图片。然后至少发布一个有效的URL。
public float BatteryLifePercent
{
    get
    {
        this.UpdateSystemPowerStatus();
        float num = ((float) this.systemPowerStatus.BatteryLifePercent) / 100f;
        if (num <= 1f)
        {
            return num;
        }
        return 1f;
    }
}