J'ai besoin d'encapsuler exe sur mon application wpf. Mon application wpf est très grande et avec de nombreux UserControls. Pour ce faire, j'ai démarré l'exe de mon code, puis récupère le handle et utilisé le "setParent" pour "lier" l'exe à mon application, mais le seul effet est d'afficher le menu déroulant de l'exe, mais pas la page principale. Par exemple: j'ai essayé d'incorporer le bloc-notes, mais n'apparaît que dans le menu déroulant lorsque je clique dans la zone (notez que la barre de menu principale n'apparaît pas).L'encapsulation C# exe dans wpf ne fonctionne pas
var procInfo = new System.Diagnostics.ProcessStartInfo(this.exeName);
procInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(this.exeName);
// Start the process
_childp = System.Diagnostics.Process.Start(procInfo);
// Wait for process to be created and enter idle condition
_childp.WaitForInputIdle();
// Get the main handle
_appWin = _childp.MainWindowHandle;
// Get main window handle
var helper = new WindowInteropHelper(Window.GetWindow(this.AppContainer));
// Incapsulate
SetWindowLongA(_appWin, -20, 0x00000040 | 0x00000008);
SetParent(_appWin, helper.Handle);
Notez que j'ai essayé ce morceau de code dans d'autres applications C# et fonctionne très bien! Je pense qu'il y a un problème de redessiner/mettre à jour la fenêtre. De quelle façon puis-je forcer ce redessin de l'exe externe dans mon application? Pouvez-vous m'aider, même pour trouver une solution alternative à l'exe intégré? Merci
J'ai essayé la solution pour exécuter l'exe dans un onglet séparé (here), mais même cette solution fonctionne pas. Est-ce que je peux résoudre ceci avec un "SendMessage"??
Pouvez-vous me suggérer un test à faire?
Je vous demande une chose: aidez-moi !!!
http://www.pinvoke.net/default.aspx/user32.RedrawWindow ?? – tolanj
ou est-ce un problème Z-index? Je ne suis pas sûr à 100% ce que vous essayez d'atteindre ... – tolanj
http://www.pinvoke.net/default.aspx/user32/BringWindowToTop.html ?? – tolanj