Мне нужно инкапсулировать exe в мое приложение wpf. Мое приложение wpf очень велико и имеет множество UserControls. Для этого я запустил exe из своего кода, затем достал дескриптор и использовал «setParent» для привязки exe к моему приложению, но единственный эффект - показать выпадающее меню exe, но не на главной странице. Например: я попытался внедрить блокнот, но при нажатии в области появляется только раскрывающееся меню (обратите внимание, что не отображается строка главного меню).C# exe encapsulation in wpf не работает
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);
Обратите внимание, что я пробовал этот кусок кода в другом приложении C# и отлично работал! Я думаю, что есть проблема с перерисованием/обновлением видового экрана. В какой способ я могу заставить эту перерисовку внешнего exe внутри моего приложения? Можете ли вы мне помочь, даже чтобы найти альтернативное решение для встроенного exe? Благодаря
Я попытался решение запустить ех в отдельной вкладке (here), но даже это решение не работает.
Можно ли разрешить это с помощью «SendMessage» ??? Можете ли вы предложить мне тест?
Прошу вас одно: помогите мне !!!
HTTP://www.pinvoke.net/default.aspx/user32.RedrawWindow ?? – tolanj
или это проблема с Z-индексом? Я не уверен на 100%, чего вы пытаетесь достичь ... – tolanj
http://www.pinvoke.net/default.aspx/user32/BringWindowToTop.html ?? – tolanj