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 :
SetWindowPos(myProcess1.MainWindowHandle, IntPtr.Zero, 0, 0, 800, 1000, 0)
Mon programme :
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
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
Partager