Bonjour,

Je lance un fichier exécutable (notepad.exe pour exemple) depuis le Form.

Par défaut il s'affiche en format minimized (1/4 de l'écran) à un emplacement aléatoire.

Je dimensionne et positionne la fenêtre du process en cours avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SetWindowPos(myProcess1.MainWindowHandle, IntPtr.Zero, 0, 0, 800, 1000, 0)
Mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Using myProcess1 As New Process()
 
 
                                            myProcess1.StartInfo.FileName = "C:\notepad.exe"   'charge le processus 
 
                                            myProcess1.Start() 'lance le process
 
                                            Thread.Sleep(100) 'laisse le temps au pocess de se lancer
 
                                            SetWindowPos(myProcess1.MainWindowHandle, IntPtr.Zero, 0, 0, 800, 1000, 0)  'dimensionner la fenêtre process 
 
                                            SetWindowText(myProcess1.MainWindowHandle, "TITRE NUMERO UN")  'change le titre de la fenêtre process
 
                                            'fermer la fenêtre en fin de processus :
                                            myProcess1.WaitForExit()  'attend qu'il soit terminé avant d'aller plus loin
                                            myProcess1.Close()  'ferme le process
                                        End Using
On note que laisse le temps au pocess de se lancer sauf que dans certains cas (mise à jour du PC, etc.) ce délai est trop court et le process démarre définitivement dans le format aléatoire vu plus haut.

Si j'augmente la durée de Thread.Sleep l'écran va flasher une fraction de seconde sur le format aléatoire avant de passer au format imposé. => pas terrible !

Bien sur on ne peut pas mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SetWindowPos(myProcess1.MainWindowHandle, IntPtr.Zero, 0, 0, 800, 1000, 0)
avant myProcess1.Start

Ma question :

Comment synchroniser SetWindowPos avec myProcess1.Start pour éviter les problèmes évoqués ci-dessus. Je n'ai rien trouvé sur les rares sujets traitant du sujet

En vous remerciant pour votre aide.

Bien à vous