C# 使用进程在winforms中显示外部程序
我试图将外部程序的一部分(窗口的一部分)嵌入到我正在开发的现有WinForm中 下面是网上的例子,我得出了以下结论。我假设流程名称是唯一的、单数的,并且它已经打开,在示例中:C# 使用进程在winforms中显示外部程序,c#,winforms,process,C#,Winforms,Process,我试图将外部程序的一部分(窗口的一部分)嵌入到我正在开发的现有WinForm中 下面是网上的例子,我得出了以下结论。我假设流程名称是唯一的、单数的,并且它已经打开,在示例中: private void button1_Click(object sender, EventArgs e) { Process[] myProc = Process.GetProcessesByName("the_external_program_i_want"); Process p = myProc[
private void button1_Click(object sender, EventArgs e)
{
Process[] myProc = Process.GetProcessesByName("the_external_program_i_want");
Process p = myProc[0];
IntPtr appWin = p.MainWindowHandle;
SetParent(appWin, this.Handle);
SetWindowLong(appWin, GWL_STYLE, WS_VISIBLE);
MoveWindow(appWin, panel1.Location.X, panel1.Location.Y, panel1.Width, panel1.Height, true);
}
我的问题是,在我关闭WinForm后,我意识到这个外部程序将触发一个弹出框,显示“program_name已停止工作”
我的问题是,在WinForm中是否需要调用其他函数来正确关闭外部程序
谢谢 首先,使整个类都能访问
p
变量。
然后将事件侦听器添加到FormClosing事件:
this.FormClosing += Window_FormClosing;
void Window_FormClosing(object sender, FormClosingEventArgs e)
{
p.Kill();
}
谢谢真不敢相信这么简单。