■ GetSystemPowerStatus API 함수를 선언하는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
#region 시스템 전원 상태 구하기 - GetSystemPowerStatus(systemPowerStatus) /// <summary> /// 시스템 전원 상태 구하기 /// </summary> /// <param name="systemPowerStatus">시스템 전원 상태</param> /// <returns>처리 결과</returns> [DllImport("kernel32", SetLastError = true, ExactSpelling = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetSystemPowerStatus(ref SYSTEM_POWER_STATUS systemPowerStatus); #endregion /// <summary> /// 직렬 라인 상태 /// </summary> public enum ACLineStatus : byte { /// <summary> /// 오프라인 /// </summary> Offline = 0, /// <summary> /// 온라인 /// </summary> Online = 1, /// <summary> /// 알 수 없음 /// </summary> Unknown = 255 } /// <summary> /// 배터리 플래그 /// </summary> [Flags] public enum BatteryFlag : byte { /// <summary> /// 높음 /// </summary> High = 1, /// <summary> /// 낮음 /// </summary> Low = 2, /// <summary> /// 위기 /// </summary> Critical = 4, /// <summary> /// 충전중 /// </summary> Charging = 8, /// <summary> /// 시스템 배터리 없음 /// </summary> NoSystemBattery = 128, /// <summary> /// 알 수 없음 /// </summary> Unknown = 255 } /// <summary> /// 시스템 상태 플래그 /// </summary> public enum SystemStatusFlag : byte { /// <summary> /// OFF /// </summary> Off = 0, /// <summary> /// ON /// </summary> On = 1 } /// <summary> /// 시스템 전원 상태 /// </summary> [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_POWER_STATUS { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Public #region Field /// <summary> /// 직렬 라인 상태 /// </summary> public ACLineStatus ACLineStatus; /// <summary> /// 배터리 충전 상태 /// </summary> public BatteryFlag BatteryChargeStatus; /// <summary> /// 배터리 수명 (비율) /// </summary> public byte BatteryLifePercent; /// <summary> /// 배터리 세이버 /// </summary> public SystemStatusFlag BatterySaver; /// <summary> /// 배터리 수명 시간 (초) /// </summary> public int BatteryLifeTime; /// <summary> /// 전체 배터리 수명 시간 (초) /// </summary> public int FullBatteryLifeTime; #endregion } |