Problème pour trouver une fenêtre avec FindWindowEx

madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 - 20 sept. 2012 à 10:56
madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 - 10 oct. 2012 à 09:39
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

madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 1
28 sept. 2012 à 09:56
up ?
0
madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 1
4 oct. 2012 à 11:01
up ?
0
madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 1
10 oct. 2012 à 09:39
up !
0
Rejoignez-nous