PowerMonitor.cpp
上传用户:sz0451
上传日期:2022-07-29
资源大小:256k
文件大小:2k
源码类别:

.net编程

开发平台:

Visual C++

  1. // This is the main project file for VC++ application project 
  2. // generated using an Application Wizard.
  3. #include "stdafx.h"
  4. #using <mscorlib.dll>
  5. using namespace System;
  6. using namespace System::Runtime::InteropServices;
  7. [StructLayoutAttribute(LayoutKind::Sequential)]
  8. __gc class PStat {
  9. public:
  10.     System::Byte ACLineStatus;           
  11.     System::Byte BatteryFlag;           
  12.     System::Byte BatteryLifePercent;    
  13.     System::Byte Reserved1;             
  14.     System::UInt32 BatteryLifeTime;      
  15.     System::UInt32 BatteryFullLifeTime;  
  16. };
  17. // Define the BOOL type
  18. typedef int BOOL;
  19. // Prototype for the function
  20. [DllImportAttribute("Kernel32.dll", CharSet=CharSet::Auto)]
  21. BOOL GetSystemPowerStatus(PStat* ps);
  22. // This is the entry point for this application
  23. #ifdef _UNICODE
  24. int wmain(void)
  25. #else
  26. int main(void)
  27. #endif
  28. {
  29.     Console::WriteLine(S"Power Status Test...");
  30.     PStat* ps = new PStat();
  31.     BOOL b = GetSystemPowerStatus(ps);
  32.     Console::WriteLine(S"Got status, return was {0}", __box(b));
  33.     // Report on the AC line status
  34.     Console::Write(S"AC line power status is ");
  35.     switch(ps->ACLineStatus) {
  36.     case 0:
  37.         Console::WriteLine("'off'");
  38.         break;
  39.     case 1:
  40.         Console::WriteLine("'on'");
  41.         break;
  42.     case 255:
  43.         Console::WriteLine("'unknown'");
  44.         break;
  45.     }
  46.     // Report on the battery status
  47.     Console::Write(S"Battery charge status is ({0})", 
  48.                                             __box(ps->BatteryFlag));
  49.     if (ps->BatteryFlag & 1)
  50.         Console::Write(" 'high'");
  51.     if (ps->BatteryFlag & 2)
  52.         Console::Write(" 'low'");
  53.     if (ps->BatteryFlag & 4)
  54.         Console::Write(" 'critical'");
  55.     if (ps->BatteryFlag & 8)
  56.         Console::Write(" 'charging'");
  57.     if (ps->BatteryFlag & 128)
  58.         Console::Write(" 'no system battery'");
  59.     Console::WriteLine();
  60.     // What's the percentage charge left in the battery?
  61.     Console::WriteLine(S"Battery life is {0}%", 
  62.                                         __box(ps->BatteryLifePercent));
  63.     // How many seconds battery life is left?
  64.     if (ps->BatteryLifeTime == -1)
  65.         Console::WriteLine("Battery life in seconds: Unknown");
  66.     else
  67.         Console::WriteLine(S"Battery seconds remaining: {0} secs", 
  68.                                         __box(ps->BatteryLifeTime));
  69.     return 0;
  70. }