えっと。解決されていないようなので、Win32APIを使った方法を提示します。
#uselib "user32.dll"
#func FindWindowEx "FindWindowExA" sptr, sptr, sptr, sptr
#func GetWindowThreadProcessId "GetWindowThreadProcessId" sptr, sptr
#uselib "kernel32.dll"
#func OpenProcess "OpenProcess" sptr, sptr, sptr
#func GetExitCodeProcess "GetExitCodeProcess" sptr, sptr
#func CloseHandle "CloseHandle" sptr
#define STILL_ACTIVE 0x000103
#define PROCESS_ALL_ACCESS 0x1F0FFF
sdim wndName, 256
pos 0, 0
mes "監視するプロセスのウィンドウのタイトル"
pos 3, 20
input wndName, 200, 17
pos 3, 40
button "監視開始。", *start
font msGothic, 10
pos 3, 80
stop
*start
gosub *searchWindow
repeat
wait 50
gosub *getExitCode
loop
stop
*searchWindow
FindWindowEx 0, 0, 0, wndName
if (stat == 0) {
mes "ウィンドウが見つかりませんでした。"
stop
} else {
hTarget = stat
}
dim piTarget
GetWindowThreadProcessId hTarget, varptr(piTarget)
OpenProcess PROCESS_ALL_ACCESS, 0, piTarget
hpTarget = stat
mes "ウィンドウが見つかり、準備が出来ました。"
mes "監視を開始します。"
return
*getExitCode
dim exitCode
GetExitCodeProcess hpTarget, varptr(exitCode)
if (exitCode != STILL_ACTIVE) { //0が返りますが、終了してしまっているため、関数が失敗、ということです。
mes "監視プロセスが終了しました。"
stop
}
return
*exit
CloseHandle hpTarget
end