Obtenha qual processo / janela é realmente visível em C #

Tenho uma lista de todas as janelas abertas, aquelas na barra de tarefas do Windows. O que eu quero fazer é remover os que não são visíveis da list

O que quero dizer é que, se uma janela estiver oculta por outra, ela não deverá estar na minha list

Pesquiso no google nos últimos dois dias sem sucesso ...

Alguma ideia

PS: posso obter a localização e o tamanho de cada processo, portanto, a última vez que um processo foi usado / tempo ocioso também funcionaria ...

questionAnswers(1)

yourAnswerToTheQuestion