#include "llmod.as" ;電源状態を取得してみる ;使う関数 ; BOOL GetSystemPowerStatus( ; LPSYSTEM_POWER_STATUS lpSystemPowerStatus ; ); ;SYSTEM_POWER_STATUS構造体に、 ;現在の電源状態を代入します。 ;構造体の解説 ;typedef struct _SYSTEM_POWER_STATUS { ; BYTE ACLineStatus; ; BYTE BatteryFlag; ; BYTE BatteryLifePercent; ; BYTE Reserved1; ; DWORD BatteryLifeTime; ; DWORD BatteryFullLifeTime; ; } ;ACLinestatus ; AC電源の状況を示します。 ; 0 = オフライン ; 1 = オンライン ; 255 = 不明 ; ;BatteryFlag ; バッテリーの充電状態を示します。 ; 1 = 高い ; 2 = 低い ; 4 = 致命的(オイ) ; 8 = 充電中 ; 128 = バッテリーを装備していない ; 256 = 不明 ;BatteryLifePercent ; バッテリーの残りを0〜100のパーセンテージで示します。 ; 0〜100 = バッテリーの残量 ; 255 = 不明 ;BatteryLifeTime ; バッテリーの残り時間を示します(単位:秒)。 ; -1 = 不明 ;BatteryFullLifeTime ; バッテリーが満タンだった場合の残り時間(単位:秒)のような気がします。 ; 訳に自信がありません。 ; -1 = 不明 ;で、今回のHSPモジュール命令の説明。 ; ;GetPowerSt v1,n2 ; ; 引数 ; v1 = 戻り値を格納する数値型配列変数 ; ; 解説 ; 数値型配列変数v1に電源の状態を返します。 ; ; ACLineStatus ; BatteryFlag ; BatteryLifePercent ; BatteryLifeTime ; BatteryFullLifeTime ; ; の順に数値が格納されます。 #module "GetPowSt" #deffunc GetPowSt val,int mref ret,48 mref flag,1 mref stt,64 dim syspowst,3 getptr pm,syspowst dllproc "GetSystemPowerStatus",pm,1,D_KERNEL@ if dllret@=0:dialog "関数呼び出しに失敗しました",1:end peek acline,syspowst.0,0 peek battery,syspowst.0,1 peek battery_percent,syspowst.0,2 ret.0=acline ret.1=battery ret.2=battery_percent ret.3=syspowst.1 ret.4=syspowst.2 return #global ;-----------------------↓サンプル GetPowSt t if t.0=0:mes "AC電源はオフラインです。" if t.0=1:mes "AC電源はオンラインです。" if t.0=255:mes "AC電源の状態は不明です。" if t.2!255:mes "バッテリーの残量はあと"+t.2+"%のようです。" if t.3!-1:mes "バッテリーはあと"+t.3+"秒(MAX"+t.4+"秒)稼働するようです。" stop