Problème pour trouver une fenêtre avec FindWindowEx

Signaler
Messages postés
100
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
21 décembre 2012
-
Messages postés
100
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
21 décembre 2012
-
Bonjour,

J'ai un petit soucis pour trouvé une fenêtre d'un logiciel avec lequel je dois réaliser quelques interactions simples !
J'utilise spy++ pour vérifier les noms/handles/process associés à mes fenêtres.

J'ai déjà fait plusieurs choses : trouver la fenêtre principale de mon logiciel, trouver des fenêtres enfants et récupérer des informations/fermer des fenêtres/envoyer des commandes...
Jusqu'à là, tout va bien !

J'ai maintenant un soucis avec une fenêtre. La différence avec toutes les autres, c'est que dans l'arborescence de spy++, cette fenêtre apparaît "à la racine", comme étant une application à part entière, et n’apparaît donc pas dans l'arborescence de mon logiciel, alors que quand je vais voir les propriétés, elle est bien indiqué comme étant enfant de mon logiciel, et appartient au même process et même thread !

Du coup j'ai fait pleins de test, cherché dans tous les process si je trouve son nom (de la fenêtre que je cherche, donc), je ne trouve bien sur pas vu que pour ce process j'ai la fenêtre principale du logiciel ; j'ai cherché en tant que fenêtre enfant de mon logiciel, il ne trouve pas non plus...

Pour ce qui est du code, il n'y a vraiment pas grand chose :

Recherche de la fenêtre principale de mon logiciel, puis de la fenêtre que je cherche :
foreach (Process proc in Process.GetProcesses())
{
    if (proc.MainWindowTitle.StartsWith("BLUM FormControl"))        //On cherche dans tous les process si Form Control
//est ouvert (nom de fenêtre commançant systématiquement par "BLUM FormControl" !)
    {
        iProcHandleFormControl = proc.MainWindowHandle.ToInt32();   //On récupère alors le handle correspondant

        iProcHandleFenetreMeasuringJob = FindWindowEx(iProcHandleFormControl, 0, 0, "Measuring Job SINUMERIK 840D (File
Interface)");   //La fenêtre que je recherche !!
    }
}


J'ai aussi essayé :
foreach (Process proc in Process.GetProcesses())
{
    if (proc.MainWindowTitle.StartsWith("BLUM FormControl"))        //On cherche dans tous les process si Form Control
//est ouvert (nom de fenêtre commançant systématiquement par "BLUM FormControl" !)
    {
        iProcHandleFormControl = proc.MainWindowHandle.ToInt32();   //On récupère alors le handle correspondant
    }
    else if (proc.MainWindowTitle.StartWith("Measuring Job"))
    {
        iProcHandleFenetreMeasuringJob = proc.MainWindowHandle.ToInt32();   //La fenêtre que je recherche !!
    }
}


Quelqu'un aurait-il une idée ??
Merci d'avance !

Mad Keyboard

ps : je ne sais pas comment insérer des images, je vous aurais transmis des screenshots de spy++ pour vous montrer comment se présente l'arborescence !

3 réponses

Messages postés
100
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
21 décembre 2012
1
up ?
Messages postés
100
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
21 décembre 2012
1
up ?
Messages postés
100
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
21 décembre 2012
1
up !