子孫ウィンドウを列挙する

正常に動作するかは確認していません。
また、再帰を使用しているので深さが512付近になると落ちます。
そこまで深くネストした親子関係はないと思いますが。

正常に動作するかは確認していません。
また、再帰を使用しているので深さが512付近になると落ちます。
そこまで深くネストした親子関係はないと思いますが。

  • タグ:
  • タグはありません
#module ED
#uselib "User32.dll"
#cfunc ED_GetWindow "GetWindow" int, int
// EnumDescendants handle, result
// handleresult
// result0dim result
#deffunc EnumDescendants int handle, array result, local child, local flag
//
child = ED_GetWindow(handle, 5/*GW_CHILD*/)
//
while child
// result
//
flag = 1
foreach result
if result(cnt) == child {
//
flag = 0
break
}
loop
if flag {
// result
if result(0) {
//
result(length(result)) = child
} else {
// 0
result(0) = child
}
//
EnumDescendants child, result
}
//
child = ED_GetWindow(child, 2/*GW_HWNDNEXT*/)
wend
return
#global
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX