You are on the right track. Odds are your problem is that the window position is loading off the screen. You can call SetWindowPos to move the window to the top left corner:
Code:
[DllImport("user32.dll", SetLastError = true)]
private static extern uint SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
public static void LoadProcessInControl(string _Process, Control _Control)
{
uint SWP_NOSIZE = 1;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(_Process);
p.WaitForInputIdle();
Native.SetParent(p.MainWindowHandle, _Control.Handle);
SetWindowPos(p.MainWindowHandle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOSIZE);
}