私は使ったことがありませんが、
pipeexec と pipeget で外部の実行ファイルが終了しているかどうか
監視することができたはずです。
試しに組んでみました。
こちらからダウンロードできます。
ソースコードも一応同梱しておきました。
http://www1.axfc.net/uploader/Sc/so/288315.zip&key=hsp
; [実行ファイルA] ------------------------------------------
#packopt name "exe_a"
;pipeexec/pipegetが定義されているファイルです。必ずインクルード。
#include "hspext.as"
;pipeexec用に大きめのバッファを確保する必要がある?(詳しくはリファレンス参照)
sdim buf,32000
screen 0,320,240
button "実行する",*実行開始
stop
*実行開始
	;既に実行中であれば何もしない
	if zikkou_flag = 1 {
		mes "既に実行中です。終了までお待ち下さい。"
	} else {
		zikkou_flag = 1
		pipeexec buf,"exe_b.exe",1
		mes "exe_b.exe を実行しました。"
	}
goto *終了待ち
*終了待ち
	; 終了まで待つ
	repeat
		pipeget buf
		if stat = 0 {
			zikkou_flag = 0
			mes "終了されました。"
			break
		}
		wait 1
	loop
stop
; [実行ファイルB] ------------------------------------------
#packopt name "exe_b"
randomize
screen 0,320,240
r=150+rnd(400)
repeat r
	cls
	mes "終了までの時間が乱数により決められます"
	mes "終了まであと " + r + " 回"
	r--
	wait 1
loop
end
と、ここまでやってから気づいたのですが、
pipegetのヘルプに素晴らしいサンプルがありました・・・;
そちらを見て頂いた方が分かりやすいかもしれませんが、
私のサンプルも一応開示しておきます。