Meilleure façon de «ancrer» une application tierce exécutée dans un panneau windows.forms?

StackOverflow https://stackoverflow.com/questions/1435358

  •  07-07-2019
  •  | 
  •  

Question

Je le fais actuellement comme suit:

// _Container is the panel that the program is to be displayed in.

System.Diagnostics.Process procTest = new System.Diagnostics.Process();
procTest.StartInfo.FileName = "TEST.EXE";
procTest.StartInfo.CreateNoWindow = false;
procTest.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
procTest.Start();

procTest.WaitForInputIdle();
SetParent(procTest.MainWindowHandle, _Container.Handle);
MoveWindow(procTest.MainWindowHandle, 
           0, 0, _Container.Width, _Container.Height, true);

Le problème que je rencontre avec ce code est que certaines parties de l'interface utilisateur de l'application ne fonctionnent plus correctement une fois que j'ai changé MainWindowHandle (c'est-à-dire: des boutons manquent de texte).

Existe-t-il un moyen de le faire sans causer de problèmes avec l’application ancrée? (Via .net ou user32)?

Était-ce utile?

La solution

Tout d'abord, au lieu d'attendre simplement 1,5 seconde, essayez d'appeler procTest. WaitForInputIdle attendre que sa boucle de message soit libre. Vous l'êtes déjà.

En général, je ne pense pas qu'il soit possible de le faire sans modifier le programme que vous hébergez.

MODIFIER : vous pouvez essayer de garder l'autre programme au-dessus de votre zone d'hébergement en vous cachant dans la barre des tâches, en supprimant sa barre de titre, en le déplaçant au fur et à mesure que votre programme se déplace, etc. fonctionne pas parfaitement; Je vous recommande d'essayer de trouver une alternative.

Essayez de contacter les développeurs d'origine de l'application tierce et de leur demander conseil.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top