〜 システム 〜
省エネモード使用可否とタイムアウト時間を取得 (要USER32.DLL)

API関数のSystemParametersInfoは、デスクトップ項目関連のほか、
ユーザー補助、電力管理等、コントロールパネルで設定できる項目の設定と取得をするものであり、
取得及び設定のできる項目総数が150ほどあるので、このページだけで全てを紹介できません。
今回は「低消費電力モードの使用可否、および実行されるまでの待ち時間を取得してみる」と言うことで、
取得に必要なSystemParametersInfoの設定パラメータのみを抜粋すると次のようになります。
uiActionuiParampvParam
低消費電力モードの使用可否設定SPI_GETLOWPOWERACTIVE(=0x0053)不使用(=0)受取先変数のポインタ
低消費電力モード実行までの時間SPI_GETLOWPOWERTIMEOUT(=0x004F)不使用(=0)受取先変数のポインタ
情報を取得するだけですので、実際に設定を変更したい場合はコチラのやり方を参考にしてみてください。

spi アクション, 送信値, 一時変数, 更新
アクション実施するシステム情報の取得・設定内容を指定する。
送信値数値パラメータを指定する。
一時変数一時的に使用する変数のポインタを指定する。
更新設定時にユーザープロファイルの更新、ウィンドウへの通知を実施するか否かを指定する。

getlowpowermode 受取変数
受取変数低消費電力モードの情報を受け取る数値型変数を指定する。

getlowpowertime 受取変数, 取得単位
受取変数低消費電力モード実行までの待ち時間を受け取る数値型変数を指定する。
取得単位分単位で取得する場合は1を、秒単位のままでよいなら0を指定する。

 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
	ll_libload user, "user32.dll"
	ll_getproc SystemParametersInfo, "SystemParametersInfoA", user

#module
#deffunc spi int, int, int, int
	mref uiaction, 0 : mref uiparam, 1 : mref pvparam, 2 : mref fwinini, 3
	prm = uiaction, uiparam, pvparam , fwinini
	ll_callfunc prm, 4, SystemParametersInfo@
	return

#deffunc getlowpowermode val
	mref mode, 16
	ll_getptr mode : ll_ret p
	spi 0x0053, 0, p // SPI_GETLOWPOWERACTIVE
	return

#deffunc getlowpowertime val, int
	mref time, 16 : mref mflg, 1
	ll_getptr time : ll_ret p
	spi 0x004F, 0, p // SPI_GETLOWPOWERTIMEOUT
	if mflg : time = time / 60
	return
#global

	sdim msg, 8, 2
	msg = "ません", "ます"
	getlowpowermode flg
	pos 10, 10 : mes "省エネモードは使用でき" + msg.flg
	getlowpowertime minute, 1 // 分単位で取得
	pos 10, 30 : mes "モニタの電源を" + minute + "分後に切ります"
	stop

可否情報 = getlowpowermode( )
可否情報取得した低消費電力モードの情報受取先を指定する。
[パラメータなし]可否情報を取得するだけのため、パラメータは必要ない。

時間 = getlowpowertime(取得単位)
時間低消費電力モード実行までの待ち時間の受取先を指定する。
取得単位分単位で取得する場合は1を、秒単位のままでよいなら0を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#uselib  "user32.dll"
#func  global SystemParametersInfo "SystemParametersInfoA" int, int, var, int

#module
#defcfunc getlowpowermode local i
	SystemParametersInfo 0x0053, 0, i // SPI_GETLOWPOWERACTIVE
	return i

#defcfunc getlowpowertime int mflg, local i
	SystemParametersInfo 0x004F, 0, i // SPI_GETLOWPOWERTIMEOUT
	if mflg : return i / 60 : else : return i
#global

	flg = "ません", "ます"
	pos 10, 10 : mes "省エネモードは使用でき" + flg(getlowpowermode())
	pos 10, 30 : mes "モニタの電源を" + getlowpowertime(1) + "分後に切ります" // 分単位で取得