[Windows Mobile Development and Hacking General] thx1200:
Overview

You've seen these before -- the little green line at the top of the screen that indicates the current battery level. This app is really nothing new or revolutionary. The main difference of BattLineSvc is that it's a true Windows Mobile service, so it does NOT use one of the precious few 32 slots available for processes. You can find more information about services here. This app has been tested on Windows Mobile 5, 6, 6.1, 6.5, and 6.5.3.

CodePlex

BattLineSvc development is hosted at Microsoft CodePlex! http://www.codeplex.com/BattLineSvc

License

Ms-RL

Tip Jar

Like this app? Want more like it or quicker updates? Tip a buck (or Euro or Pound or whatever) or two to help the author out! Click here to make a safe donation via PayPal.

Current features

- Shows a nice bar along the top of your screen to indicate battery status.

- Color changes based on 'warning' and 'critical' battery levels, as well as when the device is on AC power (configurable).

- Immediately correctly resizes when the screen orientiation changes.

- The battery level is updated immediately when the device notifies listeners that battery status has changed (or you can specify an interval if your device isn't sending notifications.

- Can show a bar at the bottom, left, and right sides of the battery bar (if you want it).

- Can be offset from the left and right, if you need it.

- Height of the bar can be changed.

- VERY low resources used -- runs as a TRUE service and uses as close as 0% CPU as is possible by an app like this. So it's good for even older snail devices. :-D

- Has a configuration app (requires .Net CF 3.5)

- AppToDate support!

Recent Changes (See CodePlex or changelog.txt for longer changelog)

- (2.1) Fixed a bug where on system start-up, it would pop up a notification box to let you know the service started. Annoying! And fixed!

- (2.1) Fixed the styles in the notification boxes for start/stop service.

- Fixed bug where sometimes the line would not show up, even with the 90 second boot-up delay. This was due to the window being created too early (not actually delayed, even though the subclassing was properly delayed. Oops!

- Boot delay was reduced to 30 seconds from system start-up; so far no issues with it starting too early!

- Added a "right side offset" which works as the left side offset, but for the right side.

- Added a "right line" which works the same as the left line.

- Added a new color setting for when the battery is charging. (Default is a light gray-blue.)

- Battery status, by default, no longer refreshes on an interval, but instead by waiting for battery notification events. This makes BattLineSvc even more efficient! The interval timer is still there in case your device does not work with events only.

- Reduced the number of subsequent refreshes by requesting a synchronous status refresh; previously it would wait asynchronously which was less efficient since the update could take anywhere from a few milliseconds to several seconds.

- Removed a redundant battery status checking method which monitored the registry (no longer needed because the new power event-based system works better and is more efficient).

- Removed a few other old segments of code that were inefficient.

- Added user notification for starting/stopping the service with the start/stop apps.

- Added a configuration program (yay). Requires .Net CF 3.5. You can still edit the registry manually.

Registry

Look in HKCU\Software\Avian Waves\BattLineSvc

Colors are best edited as hex, using the following pattern: BBGGRR (seems backwards, but it's due to the endedness of DWORDS in CE). Your registry editor may not show leading zeros either, keep that in mind.

- TaskbarClass = (string) Don't change this unless you are 100% positive the taskbar is not named standard.

- Height = (int) Number of pixels tall for the battery line.

- LeftOffset = (int) Number of pixels from the left edge that the battery line starts.

- LowPercent = (int 0-100) What percentage of battery charged is considered low (yellow).

- CriticalPercent = (int 0-100) What percentage of battery charged is considered critical (red).

- ShowLeftLine = (bool) Show the vertical line on the left side of the title bar where the BattLine starts.

- ShowRightLine = (bool) Show the vertical line on the left side of the title bar where the BattLine starts.

- ShowBottomLine = (bool) Show a line on the bottom of the battery bar

- ColorForegroundSolidNormal = (color) For 'normal' (not low) battery charge, this is the foreground color, default is bright green.

- ColorBackgroundSolidNormal = (color) For 'normal' (not low) battery charge, this is the background color, default is dark green.

- ColorForegroundSolidLow = (color) For low battery charge, this is the foreground color, default is bright yellow.

- ColorBackgroundSolidLow = (color) For low battery charge, this is the background color, default is dark yellow / brown.

- ColorForegroundSolidCritical = (color) For critical battery charge, this is the foreground color, default is red.

- ColorBackgroundSolidCritical = (color) For critical battery charge, this is the background color, default is dark red.

- ColorForegroundSolidCharging = (color) For when the device is charging (on AC), this is the foreground color, default is light gray-blue.

- ColorBackgroundSolidCharing = (color) For when the device is charging (on AC), this is the background color, default is dark gray-blue.

- ColorLeftLine = (color) Color of the left line.

- ColorRightLine = (color) Color of the right line.

- ColorBottomLine = (color) Color of the bottom line.

- TimerIntervalSeconds = (int) How often do we look to see if the battery level has changed (in seconds)? NOTE: As of V2, set this value to 0 unless BattLineSvc is not updating on your device. Zero means disabled. This settings is no longer necessary as BattLineSvc now waits for battery notification events, instead of updating on a timer.

Download

CAB Installer: http://battlinesvc.codeplex.com/releases

Source Code: http://battlinesvc.codeplex.com/SourceControl/list/changesets