#region 窗体内嵌外部程序的显示 [DllImport("User32.dll ", EntryPoint = "SetParent")] private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); [DllImport("user32.dll ", EntryPoint = "ShowWindow")] public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); private void button1_Click(object sender, EventArgs e) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe "; p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;//加上这句效果更好 p.Start(); System.Threading.Thread.Sleep(100);//加上,100如果效果没有就继续加大 SetParent(p.MainWindowHandle, panel1.Handle); //panel1.Handle为要显示外部程序的容器 //ShowWindow(p.MainWindowHandle, 3); } #endregion /// <summary> /// 获取控件的图片 /// </summary> /// <param name="Obj"></param> /// <returns></returns> private Bitmap DrawMeToBitmap(Control Obj) { Bitmap bmp = new Bitmap(Obj.Width,Obj.Height); Graphics g = Graphics.FromImage(bmp); using (Brush backColorBrush = new SolidBrush(Obj.BackColor)) { g.FillRectangle(backColorBrush, new Rectangle(0, 0, bmp.Width, bmp.Height)); foreach (Control ctl in Obj.Controls) { using (Bitmap b = new Bitmap(ctl.Width, ctl.Height)) { ctl.DrawToBitmap(b, ctl.ClientRectangle); g.DrawImage(b, ctl.Location); } } } return bmp; }