我正在尝试使用 c# 以 winform 的形式嵌入外部应用程序。它与“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);
}
我的问题是菜单项无法响应我的点击,但“nodepad”可以工作。可能是因为我的目标应用程序是通过命令 shell 启动的。而且我不能将 WaitForInputIdle() 函数应用于我的目标应用程序,但记事本可以(nodepad 需要实际应用此函数)。
有没有人可以帮帮我,谢谢!