Obtenga qué proceso / ventana es realmente visible en C #

Tengo una lista de todas las ventanas abiertas, las de la barra de tareas de Windows. Lo que quiero hacer es eliminar los que no son visibles de la lista.

Lo que quiero decir es que si otra ventana oculta una ventana, no debería estar en mi lista.

He estado buscando en Google durante los últimos dos días sin éxito ...

¿Algunas ideas

PS: puedo obtener la ubicación y el tamaño de cada proceso, por lo que obtener la última vez que se usó un proceso / tiempo inactivo también funcionaría ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta