目前我已经用C ++构建了一个呈现OpenGL对象的应用程序。这一切都很好,但我想创建一个控制接口(C#)来控制绘制内容(使用管道或插槽)。
在我的C#应用程序中,我有一个名为“canvas”的Panel工具。在画布中我想打开C ++应用程序(C ++应用程序只是一个没有边框的窗口)。基本上我想在我的C#应用程序中显示C ++上下文。我尝试使用以下代码(打开应用程序并在“画布”中显示它),但它始终在画布(面板)外面打开exe。对于示例,我使用notepad.exe而不是真正的应用程序。我使用Visual Studio 2015。
我从另一个Stackoverflow主题中借用了代码。
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = file;
info.Arguments = "";
info.UseShellExecute = true;
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Normal;
info.RedirectStandardInput = false;
info.RedirectStandardOutput = false;
info.RedirectStandardError = false;
Process p = Process.Start(info);
p.WaitForInputIdle();
Thread.Sleep(3000);
Process[] p1;
if(p.MainWindowHandle == null)
{
List<String> arrString = new List<String>();
foreach (Process proc in Process.GetProcesses())
{
arrString.Add(Convert.ToString(proc.ProcessName));
}
p1 = Process.GetProcessesByName(file);
Thread.Sleep(5000);
SetParent(p1[0].MainWindowHandle, this.canvas.Handle);
}
else
{
SetParent(p.MainWindowHandle, this.canvas.Handle);
}
可能有一种更好的方式来达到我想要的目标,但这不是我所知道的。