Bonjour,

J'ai une petite application en C#/.NET qui lance d'autres applications et qui conserve une référence vers les processus.

Une fois le processus lancé (une application), je récupère l'instance Process et j'aimerais retrouver son WindowHandle pour pouvoir connaître les dimensions de la fenêtre.

voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Process p = new Process();
p = Process.Start(app, param);
puis après je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
tagWINDOWINFO wii = new tagWINDOWINFO();
GetWindowInfo(_p.MainWindowHandle, ref wii);
Mais voilà, ces deux bouts de code sont appelés des dizaines de fois .. à la suite.
Et parfois, j'ai l'impression que l'instance p (de Process) n'a pas eu le temps d'être complètement initialisée ..

Parfois le MainWindowHandle vaut zéro .. parfois pas ..

J'ai donc ajouté une boucle avant de l'utiliser ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
                        do
                        {
                            p.Refresh();
                            Thread.Sleep(100);
                            handle = (int)p.MainWindowHandle;
                        }
                        while (handle == 0);
Mais ca ne va pas mieux ..
Car c'est carrément l'instance 'p' qui ne vaut rien ..

J'ai ressayé avec "WaitForInputIdle" mais ca n'attend rien du tout !

Avez vous déjà eu ça ?