Enumerando Windows / Controls de outro aplicativo a partir de .Net

Estou desenvolvendo um pequeno aplicativo utilitário que precisa detectar se outro tem uma de suas janelas filho MDI abertas (é um aplicativo comercial Win32 de prateleira sobre o qual não tenho código-fonte nem controle). No meu aplicativo, eu gostaria de poder pesquisar ou detectar quando uma janela MDI Child específica está aberta.

No .Net, é fácil iterar nos processos em execução, mas não encontrei uma maneira fácil de iterar pelas (sub) janelas e controles de um determinado processo Win32 do .Net.

Alguma ideia?

Atualizar
Obrigado pelas respostas que me colocaram no caminho certo.
Eu encontrei umartigo com um projeto de teste que usa ambosEnumWindowseEnumChidWindows e outras chamadas de API para obter informações estendidas sobre os controles.

questionAnswers(3)

yourAnswerToTheQuestion