〜 ウィンドウ 〜
ウィンドウを点滅

ウィンドウが非アクティブでディスプレイ上に表示されてない時であったとしても、
利用者に対して注意を促す目的で有用なのが「対象ウィンドウのタスクバー上のバーを点滅させる」ことです。
API関数FlashWindowを使用すると、ウィンドウを非アクティブにしてアクティブに戻す処理、
タスクバーの対象バーをハイライト表示にして戻す処理を同時に行ってくれます。
API関数FlashWindowの引数は「ウィンドウハンドル」「点滅フラグ」の2つ。
点滅フラグが0の時は元の常態に戻すだけで、1にした時に上記のウィンドウ自体とタスクバーを点滅させます。
API関数FlashWindowで何回も点滅処理を繰り返す場合は、サンプルのようにループさせてください。
尚、HSP3以降では、自身のウィンドウハンドルはシステム変数で取得でき、
予め定義しておいたAPI関数EnableWindowを使用箇所でコールするだけなのでモジュール化してません。
サンプル内で使われている最小化処理はコチラで紹介した方法を使用しています。
詳しくは上記リンク先を参照してください。
	

winflash ウィンドウID
ウィンドウID点滅対象のウィンドウIDを指定する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
	ll_libload user, "user32.dll"
	ll_getproc FlashWindow, "FlashWindow", user

#module
#deffunc winflash int
	mref id, 0
	mref bmscr, 96 + id
	prm = bmscr.13, 1
	ll_callfunc prm, 2, FlashWindow@
	return
#global

	dialog "最小化されますが、点滅させて気を引かせます"
	objsend -28, 0x0112, 0xF020, nonuse, 0
	repeat
		ginfo 1
		if prmx ! -1 : break
		wait 60
		winflash
	loop
	mes "点滅を停止させました"
	stop
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#uselib "user32.dll"
#func  global FlashWindow "FlashWindow" int, int

	dialog "最小化されますが、点滅させて気を引かせます"
	sendmsg hwnd, 0x0112, 0xF020
	repeat
		if ginfo_act ! -1 : break // アクティブになるまで繰り返す
		wait 60
		FlashWindow hwnd, 1
	loop
	mes "点滅を停止させました"