Como listar janelas de aplicativos ativos usando c #

Eu preciso ser capaz de listar todos os aplicativos ativos em uma máquina com Windows. Eu estava usando esse código ...

  Process[] procs = Process.GetProcesses(".");
  foreach (Process proc in procs)
  {
      if (proc.MainWindowTitle.Length > 0)
      {
          toolStripComboBox_StartSharingProcessWindow.Items.Add(proc.MainWindowTitle);
      }
  }

até que percebi que isso não lista casos como WORD ou ACROREAD quando vários arquivos são abertos em sua própria janela. Nessa situação, somente a janela superior é listada usando a técnica acima. Eu suponho que é porque há apenas um processo, embora dois (ou mais) arquivos sejam abertos. Então, eu acho que a minha pergunta é: Como faço para listar todas as janelas em vez de seu processo subjacente?

questionAnswers(1)

yourAnswerToTheQuestion