此问题已在Stack Overflow上多次针对早期Windows操作系统得到解答,甚至还有一个视频指南:https://www.youtube.com/watch?v=N6GWgxEvibE
但是,当我在我的简单窗体中实现代码来启动calc.exe时,Calc将从我的窗体外面开始。我创建了一个表单,并使用以下代码添加了一个单击处理程序:
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
在点击处理程序中:
Process p = Process.Start("calc.exe");
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, this.Handle);
如果我添加此代码:
MessageBox.Show(DateTime.Now.ToLongTimeString());
Process p= Process.Start("calc.exe");
Thread.Sleep(1000);
MessageBox.Show("Process exited at: " + p.ExitTime.ToLongTimeString());
我开始后大约1秒显示一个时间。所以我猜我的过程我开始是一些中介,最终启动Calc.exe并退出。这显然是Windows的新行为,因为此代码用于工作。有人知道如何获得最终的进程,即实际的Calc.exe吗?