〜 ソフトウェア 〜
セイバーが起動するまでの待ち時間を設定 (要USER32.DLL)

API関数のSystemParametersInfoは、デスクトップ項目関連のほか、
ユーザー補助、電力管理等、コントロールパネルで設定できる項目の設定と取得をするものであり、
取得及び設定のできる項目総数が150ほどあるので、このページだけで全てを紹介できません。
今回は「スクーンセイバーが起動するまでの時間を変更してみる」と言うことで、
変更に必要なSystemParametersInfoの設定パラメータのみを抜粋すると次のようになります。
uiActionuiParampvParam
SPI_SETSCREENSAVETIMEOUT(=0x000F)待ち時間(=秒)不使用(=0)
自作プレイヤー利用時の「入力機器を操作しないことによるセイバー自動起動」は邪魔者でしかないので 一時的にセイバーを起動しないよう、待ち時間を0秒にして起動しないように設定しましょう。 尚、自アプリケーション内で設定を変更した場合、終了時までには元の秒数に戻すようにしてあげましょう。 元の設定時間は、待ち時間病数変更前までにコチラのやり方で取得しておきましょう。

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

saversettime 待ち時間
待ち時間スクリーンセイバーが起動するまでの待ち時間を指定する。

 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
	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 savergettime val
	mref time, 16
	ll_getptr time : ll_ret p
	spi 0x000E, 0, p, 0 // SPI_GETSCREENSAVETIMEOUT
	return

#deffunc saversettime int
	mref time, 0
	spi 0x000F, time // SPI_SETSCREENSAVETIMEOUT
	return
#global

	savergettime second : second.1 = second
	pos 10, 10 : input second
	pos 80, 10 : button "設定", *set
	pos 10, 50 : button "取得", *get
	onexit *exit
	stop

*set
	saversettime second
	stop

*get
	savergettime i
	dialog "現在設定されている待ち時間は" + i + "秒です"
	stop

*exit
	if second ! second.1 {
		dialog "開始前の待ち時間に戻しておきます"
		saversettime second.1
	}

saversettime 待ち時間
待ち時間スクリーンセイバーが起動するまでの待ち時間を指定する。

 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
#uselib  "user32.dll"
#func  global SystemParametersInfo "SystemParametersInfoA" int, int, var, int

#module
#defcfunc savergettime local i
	SystemParametersInfo 0x000E, 0, i // SPI_GETSCREENSAVETIMEOUT
	return i

#deffunc saversettime int time
	SystemParametersInfo 0x000F, time, nonuse // SPI_SETSCREENSAVETIMEOUT
	return
#global

	second = savergettime(), savergettime()
	pos 10, 10 : input second
	pos 80, 10 : button gosub "設定", *set
	pos 10, 50 : button gosub "取得", *get
	onexit *exit
	stop

*set
	saversettime second
	return

*get
	dialog "現在設定されている待ち時間は" + savergettime() + "秒です"
	return

*exit
	if second ! second.1 {
		dialog "開始前の待ち時間に戻しておきます"
		saversettime second.1
	}
	end