Checking Battery Life

Tue, 15 Jan 2008 18:57:05 -0500 - Author:

The function below, called pbBatteryLow?, checks battery power in Ruby.

def pbBatteryLow?
 power="0"*12
 begin
  sps=Win32API.new('kernel32.dll','GetSystemPowerStatus','p','l')
 rescue
  return false
 end
 if sps.call(power)==1
  status=power.unpack("CCCCVV")
  # Battery Flag
  if status[1]!=255 && (status[1]&6)!=0 # Low or Critical
    return true
  end
  # Battery Life Percent
  if status[2]<5 # Less than 5 percent
    return true
  end
  # Battery Life Time
  if status[4]<300 # Less than 5 minutes
    return true
  end
 end
 return false
end