C#调用"GetSystemPowerStatus"函数获取笔记本电源信息

"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

上一篇:安装robotframework-ride 报ERROR: Command errored out with exit status


下一篇:Oracle数据库切换DG操作步骤整理