Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# .NET: How to check if we're running on battery?

i want to be a good developer citizen, pay my taxes, and disable things if we're running over Remote Desktop, or running on battery.

If we're running over remote desktop (or equivalently in a Terminal server session), we must disable animations and double-buffering. You can check this with:

/// <summary> /// Indicates if we're running in a remote desktop session. /// If we are, then you MUST disable animations and double buffering i.e. Pay your taxes! ///  /// </summary> /// <returns></returns> public static Boolean IsRemoteSession {     //This is just a friendly wrapper around the built-in way     get     {         return System.Windows.Forms.SystemInformation.TerminalServerSession;     } } 

Now i need to find out if the user is running on battery power. If they are, i don't want to blow through their battery. i want to do things such as

  • disable animations
  • disable background spell-checking
  • disable background printing
  • turn off gradients
  • use graphics.SmoothingMode = SmoothingMode.HighSpeed;
  • use graphics.InterpolationMode = InterpolationMode.Low;
  • use graphics.CompositingQuality = CompositingQuality.HighSpeed;
  • minimize hard drive access - to avoid spin up
  • minimize network access - to save WiFi power

Is there a managed way to see if the machine is currently running on battery?

Bonus Reading

  • How do you convince developers to pay their "taxes"? (archive.is)
  • Taxes: Remote Desktop Connection and painting (archive.is)
  • GetSystemMetrics(SM_REMOTESESSION) (archive.is)
like image 296
Ian Boyd Avatar asked Oct 27 '08 19:10

Ian Boyd


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

Is C language easy?

Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

Why is C named so?

Because a and b and c , so it's name is C. C came out of Ken Thompson's Unix project at AT&T. He originally wrote Unix in assembly language. He wrote a language in assembly called B that ran on Unix, and was a subset of an existing language called BCPL.


1 Answers

I believe you can check SystemInformation.PowerStatus to see if it's on battery or not.

Boolean isRunningOnBattery =       (System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus ==         PowerLineStatus.Offline); 

Edit: In addition to the above, there's also a System.Windows.Forms.PowerStatus class. One of its methods is PowerLineStatus, which will equal PowerLineStatus.Online if it's on AC Power.

like image 88
Powerlord Avatar answered Sep 21 '22 23:09

Powerlord