In my WPF, I have a grid that contains a WindowsFormsHost which will host an .exe. My .xaml code is:
<Window x:Class="PracticeWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PracticeWPF"
mc:Ignorable="d"
Title="MainWindow" Height="800" Width="1300">
<Grid x:Name="grid">
<Button x:Name="BtnRun" Content="Run"
HorizontalAlignment="Left" Margin="10,10,0,0"
VerticalAlignment="Top" Click="BtnRun_Click"/>
<WindowsFormsHost x:Name="formshost" Margin="0,39,0,0"
Height="720" Width="1280"/>
</Grid>
</Window>
And my cs:
namespace PracticeWPF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
[DllImport("user32.dll")]
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
private void BtnRun_Click(object sender, EventArgs e)
{
Process proc = Process.Start("notepad.exe");
proc.WaitForInputIdle();
while (proc.MainWindowHandle == IntPtr.Zero)
{
Thread.Sleep(100);
proc.Refresh();
}
SetParent(proc.MainWindowHandle, formshost.Handle);
}
}
}
Everything works when I'm using a WinForm but when I use the WindowsFormsHosting inside a WPF the .exe isn't visible. Any help would be greatly appreciated. Thank you.