>>153
GetWindowとGW_CHILD/GW_HWNDNEXTで回す方法は間違ってないと思う。
hWnd=GetWindow(hWnd親,GW_CHILD)
Do While hWnd <> 0
  'ここで何か処理
  hWnd=GetWindow(hWnd,GW_HWNDNEXT)
Loop
これで同じ階層のWindowは列挙できるはずだ。

問題あるとしたら、Windowの親子関係の理解かも。
ちゃんと再帰検索しないと全部出てこないよ。
Windowの階層構造は、
 DesktopWindow/Form/Frameなどのコンテナ/各種コントロール/その上の部品
ってな感じになってるから、各階層で列挙したらその下も検索しないと。

クラス名だけじゃ判別できない、ってのも、Windowの階層構造から比較すれば
絞り込めるはず。そのうえで、Textの中身で判別するなどの方法をつかえば
何とかなるんじゃないか?

#次はGetWindowTextでテキストが取れないとゴネるに1票。
#SendMessageとWM_GETTEXT使ってね。