用P/Invoke调 API:kernel32.dll中的GetSystemPowerStatus函数。函数返回系统的电源状态。状态指数系统是在直流电源还是交流电源下运作,电池是否在充电,电池的剩余电量。
先定义结构体:
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_POWER_STATUS
{
public byte ACLineStatus
public byte BatteryFlag
public byte BatteryLifePercent
public byte Reserved1
public int BatteryLifeTime
public int BatteryFullLifeTime
}
然后导入外部函数:
[DllImport("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool GetSystemPowerStatus(ref SYSTEM_POWER_STATUS systemPowerStatus)
如果调用成功,返回 true,然后分析systemPowerStatus的数据就行。
ACLineStatus为1时,表示正在使用交流电源,为0使用直流电源。
希望能够帮到你。
//电源控制程序//2009-9-2 by yingang2009
void main()
{
while(1)
{
switch (开关状态)
{
case 关:
if(有人按开关)
{
开关状态 =开
dosomething()
}
break
case 开:
if(有人按开关)
{
开关状态 =关
dosomething()
}
break
default:
break
}
}
}