Bonjour,
j'ai développé une petite application qui permet d'afficher un exe dans le panel de ma Form, j'ai lancé le processus avec process.start et puis je peux récupérer le handle de l'application avec Findwindow et l'intégrer dans le panel avec le setParent.
Tout parait bon, mais mon problème est que le process.start prend un peu de temps pour lancer le processus, donc le Findwindow lorsqu'elle cherche les handles affichés elle ne peut pas récuperer le handle de mon exe car il n'est pas encore affiché
Voici le code
Le System.Threading.Thread.Sleep(2000); n'est pas valable car je sais pas combien faut t-il attendre
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
18
19
20
21
22
23
24
25
26
27
28
29
30 processStartInfo = new System.Diagnostics.ProcessStartInfo(); newProcess = new System.Diagnostics.Process(); processStartInfo.FileName = "MyApp.exe"; try { // Start the process newProcess = System.Diagnostics.Process.Start(processStartInfo); // Wait for process to be created and enter idle condition newProcess.WaitForInputIdle(); ////// Get the main handle //appWin = newProcess.MainWindowHandle; } catch (Exception ^ex) { ..... } existNewProcess = true; //System.Threading.Thread.Sleep(2000); IntPtr handle = FindWindow(null,"MyApp"); // Put it into this form SetParent(handle, this.panel_VA.Handle); const int WM_SYSCOMMAND = 274; const int SC_MAXIMIZE = 61488; SendMessage(handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
Merci d'avance
Partager