【发布时间】:2015-09-15 07:35:56
【问题描述】:
谁能知道为什么这总是错误的?
SYSTEM_POWER_STATUS lpSystemPowerStatus;
GetSystemPowerStatus(&lpSystemPowerStatus);
int charging = (lpSystemPowerStatus.BatteryFlag & BATTERY_FLAG_CHARGING) ? 1 : 0;
【问题讨论】:
-
您没有检查
GetSystemPowerStatus()是成功还是失败。它返回一个BOOL:“如果函数成功,返回值非零。如果函数失败,返回值为零。”。实际返回值是多少?如果它成功了,您只需要从几个可能的标志值中寻找 1 个标志。BatteryFlag的实际值是多少? -
您是否在有电池的计算机上运行此程序?电池是否真的在充电而不是充满?最后,BatteryFlag 的值是是多少?检查它:)
-
另外,您没有初始化
lpSystemPowerStatus,所以如果GetSystemPowerStatus(...)失败,您可能正在检查垃圾数据。