Встраивание приложения Unity в WPF не отображается - PullRequest
0 голосов
/ 04 января 2019

У меня есть Unity .exe, который находится в той же папке, что и exe проекта (bin / debug /). Я следовал инструкциям здесь , и исполняемый файл запускается, но он не встроен в проект WPF.

Код процесса находится здесь:

 internal delegate int WindowEnumProc(IntPtr hwnd, IntPtr lparam);

    [DllImport("user32.dll")]
    internal static extern bool EnumChildWindows(IntPtr hwnd, WindowEnumProc func, IntPtr lParam);

    [DllImport("user32.dll")]
    static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

    private Process process;

    private IntPtr unityHWND = IntPtr.Zero;

    private const int WM_ACTIVATE = 0x0006;
    private readonly IntPtr WA_ACTIVE = new IntPtr(1);
    private readonly IntPtr WA_INACTIVE = new IntPtr(0);



    public UnityUserControl()
    {
        InitializeComponent();
        try
        {
            process = new Process();
            process.StartInfo.FileName = "REDACTED.exe"; //Done because of NDA
            process.StartInfo.Arguments =
                "-parentHWND " + UnityPanel.Handle.ToInt32() + " " + Environment.CommandLine;
            process.StartInfo.UseShellExecute = true;
            process.StartInfo.CreateNoWindow = true;

            process.Start();

            ActivateUnityWindow(UnityPanel.Handle);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }
    }
    private int WindowEnum(IntPtr hwnd, IntPtr lparam)
    {
        unityHWND = hwnd;
        ActivateUnityWindow(hwnd);
        return 0;
    }

И он размещен так:

<WindowsFormsHost>
    <view:UnityUserControl x:Name="UnityControl"/>
</WindowsFormsHost>

Любая помощь с этим будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...