La fenêtre de recherche avec un texte spécifique pour un Processus

Je vais essayer de trouver si une fenêtre spécifique a été ouvert par un Processus. Ce processus génère plusieurs windows, et j'ai besoin de vérifier tous les.

Je n'ai pas de mal à trouver le processus, avec

foreach (Process p in Process.GetProcesses())
{
  if (p.MainModule.FileName.ToLower().EndsWith("foo.exe"))
     FindChildWindowWithText(p); //do work

le problème est de savoir quoi faire ensuite. Je ne peux pas utiliser le Processus' MainWindowText, parce qu'il change avec n'importe quelle fenêtre est activée.

Puis j'ai essayé d'utiliser la fonction de Windows EnumChildWindows et GetWindowText, mais je ne suis pas sûr si je suis de passage une bonne poignée de EnumChildWindows. Le EnumChildWindows fonctionne comme prévu lorsqu'il est passé MainWindowHandle, mais bien sûr, le MainWindowHandle changements avec la fenêtre active. J'ai donc passé Process.Handle, mais je reçois différentes poignées et des résultats différents lors de la commutation de l'application windows. (Je comprends que EnumChildWindows retourne gère non seulement windows, mais contrôles.net de parler, pas de problème si je pouvais obtenir la légende de la fenêtre trop)

Peut-être que je fais mal et j'ai besoin d'une approche différente, encore une fois, mon problème est aussi simple que de trouver une fenêtre de texte qui correspond spécifique de l'expression régulière. Alors je serais probablement besoin d'une fonction qui énumère toutes les fenêtres, qui sont visibles dans la barre des tâches.

Grâce

OriginalL'auteur Axarydax | 2010-04-27