Некоторые проблемы при встраивании внешнего приложения в winform в C#

Я пытаюсь встроить внешнее приложение в виде winform с помощью C#. Это хорошо работает с "nodepad.exe", но мое целевое приложение использует следующий код.

        Process.Start(@"C:\Program Files\SIMPACK-9.8\run\bin\win64\simpack-viewer.exe");                        
        int timeToWait = 5000;
        while(AppHandle == IntPtr.Zero && timeToWait > 0)
        {
            Thread.Sleep(100);
            timeToWait -= 100;
            foreach (Process pList in Process.GetProcesses())
            {
                if (pList.MainWindowTitle.Contains(@"SIMPACK Viewer"))
                {
                    AppProc = pList;
                    AppHandle = pList.MainWindowHandle;
                    break;
                }
            }
        }


        if (AppHandle != IntPtr.Zero)
        {
            //AppProc.WaitForInputIdle();
            //AppHandle = foreignApp.MainWindowHandle;

            SetParent(AppHandle, this.Handle);
            SetWindowLong(AppHandle, GWL_STYLE, WS_VISIBLE + WS_MAXIMIZE);
            MoveWindow(AppHandle, 0, 0, this.Width, this.Height, true);

        }

Моя проблема в том, что пункты меню не могут реагировать на мой щелчок, но "нодпад" работает. Возможно, это потому, что мое целевое приложение запускается через командную оболочку. И я не могу применить функцию WaitForInputIdle() с моим целевым приложением, но блокнот может (нодпад должен применять эту функцию на самом деле).

Кто-нибудь может мне помочь, спасибо!

0 ответов

Другие вопросы по тегам