Win32 API 日本語リファレンス
ホームSystem.Power › BATTERY_STATUS

BATTERY_STATUS

構造体
サイズx64: 16 バイト / x86: 16 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
PowerStateDWORD4+0+0バッテリの電源状態フラグ(BATTERY_CHARGING/DISCHARGING等)である。
CapacityDWORD4+4+4現在のバッテリ残容量(mWh)である。不明時はBATTERY_UNKNOWN_CAPACITY。
VoltageDWORD4+8+8現在のバッテリ電圧(mV)である。不明時はBATTERY_UNKNOWN_VOLTAGE。
RateINT4+12+12現在の充放電率(mW)である。放電は負、充電は正の値。

各言語での定義

#include <windows.h>

// BATTERY_STATUS  (x64 16 / x86 16 バイト)
typedef struct BATTERY_STATUS {
    DWORD PowerState;
    DWORD Capacity;
    DWORD Voltage;
    INT Rate;
} BATTERY_STATUS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct BATTERY_STATUS
{
    public uint PowerState;
    public uint Capacity;
    public uint Voltage;
    public int Rate;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure BATTERY_STATUS
    Public PowerState As UInteger
    Public Capacity As UInteger
    Public Voltage As UInteger
    Public Rate As Integer
End Structure
import ctypes
from ctypes import wintypes

class BATTERY_STATUS(ctypes.Structure):
    _fields_ = [
        ("PowerState", wintypes.DWORD),
        ("Capacity", wintypes.DWORD),
        ("Voltage", wintypes.DWORD),
        ("Rate", ctypes.c_int),
    ]
#[repr(C)]
pub struct BATTERY_STATUS {
    pub PowerState: u32,
    pub Capacity: u32,
    pub Voltage: u32,
    pub Rate: i32,
}
import "golang.org/x/sys/windows"

type BATTERY_STATUS struct {
	PowerState uint32
	Capacity uint32
	Voltage uint32
	Rate int32
}
type
  BATTERY_STATUS = record
    PowerState: DWORD;
    Capacity: DWORD;
    Voltage: DWORD;
    Rate: Integer;
  end;
const BATTERY_STATUS = extern struct {
    PowerState: u32,
    Capacity: u32,
    Voltage: u32,
    Rate: i32,
};
type
  BATTERY_STATUS {.bycopy.} = object
    PowerState: uint32
    Capacity: uint32
    Voltage: uint32
    Rate: int32
struct BATTERY_STATUS
{
    uint PowerState;
    uint Capacity;
    uint Voltage;
    int Rate;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; BATTERY_STATUS サイズ: 16 バイト(x64)
dim st, 4    ; 4byte整数×4(構造体サイズ 16 / 4 切り上げ)
; PowerState : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Capacity : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Voltage : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; Rate : INT (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global BATTERY_STATUS
    #field int PowerState
    #field int Capacity
    #field int Voltage
    #field int Rate
#endstruct

stdim st, BATTERY_STATUS        ; NSTRUCT 変数を確保
st->PowerState = 100
mes "PowerState=" + st->PowerState