Некоторые проблемы при встраивании внешнего приложения в 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() с моим целевым приложением, но блокнот может (нодпад должен применять эту функцию на самом деле).
Кто-нибудь может мне помочь, спасибо!