张赐荣——一位视障程序员。
赐荣小站: www.prc.cx

張賜榮

张赐荣的技术博客

博客园 首页 新随笔 联系 订阅 管理

"GetSystemPowerStatus" 此函数检索系统的电源状态。
该状态指示系统是否运行在交流或直流电源、是否电池正在充电时,电池还有多少寿命。
函数原型 BOOL WINAPI GetSystemPowerStatus(__out LPSYSTEM_POWER_STATUS lpSystemPowerStatus);
参数lpSystemPowerStatus指向一个接收状态信息的 SYSTEM_POWER_STATUS 结构指针。
返回值如果函数成功,则返回值为非零值。如果该函数失败,则返回值为零。
要获取扩展的错误的信息,请调用GetLastError 。
函数声明:
BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus);
结构体声明:
typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE SystemStatusFlag;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
以下是 C# 演示代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.InteropServices;
namespace Program
{
public struct PowerStatus
{
public byte ACLineStatus;
public byte BatteryFlag;
public byte BatteryLifePercent;
public byte Reserved;
public int BatteryLifeTime;
public int BatteryFullLifeTime;
}
static class Program
{
[DllImport(@"kernel32.dll")] extern public static bool GetSystemPowerStatus(out PowerStatus BatteryInfo);
static int Main(string[] args)
{
PowerStatus ps = default(PowerStatus);
if (GetSystemPowerStatus(out ps) == true)
{
Console.WriteLine("交流电源已{0}", (ps.ACLineStatus == 1 ? "连接" : "断开"));
Console.WriteLine("剩余电量:百分之{0}", ps.BatteryLifePercent);
}
else
{
Console.WriteLine("电源信息获取失败");
}
Console.ReadKey(false);
return (0);
}
}
}
参考资料:
[1]: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/ns-winbase-system_power_status
[2]: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-getsystempowerstatus

posted on 2022-02-20 07:40  张赐荣  阅读(623)  评论(0编辑  收藏  举报

感谢访问张赐荣的技术分享博客!
博客地址:https://cnblogs.com/netlog/
知乎主页:https://www.zhihu.com/people/tzujung-chang
个人网站:https://prc.cx/