我如何从我的程序开始一个过程,并由visual studio控制
本文关键字:过程 一个 并由 控制 studio visual 我的 程序 开始 | 更新日期: 2023-09-27 18:18:03
为了启动我的程序的另一个实例,我做了如下操作:
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.Start();
}
并且发现停止调试器不会停止新窗口,只会停止第一个(正在启动的)窗口。
我如何以编程方式使新进程"在"VS下?
您返回的进程具有正在运行的进程的句柄。您可以在成员变量中而不是在局部变量中保存它,并在窗体关闭时终止进程。
http://msdn.microsoft.com/en-us/library/e8zac0ca.aspx您可以更改应用程序调试的开始动作
- 右键单击你的项目性>
- 启动外部程序
并设置要启动的程序。
如果您想以编程方式附加到另一个实例,可以在这里找到重复的问题:
- 如何将进程附加到Visual Studio中的调试器?
参考这篇文章:
- 使用VS.NET自动化模型附加到进程
由于您是第二次启动自己的程序,因此您知道它是GUI。您可以保留Process
引用,并在FormClosing
事件处理程序中调用CloseMainWindow
(或Kill
):
private List<Process> children = new List<Process>();
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.Start();
children.Add(p);
}
private Form1_FormClosing(object sender, FormClosingEventArgs e)
{
foreach (Process p in this.children)
{
// posts WM_CLOSE to the main handle of the process
// which allows a graceful exit, as if the user clicked [X]
p.CloseMainWindow();
// p.Kill(); // less graceful, just kill
}
}
Debug -> Attach to Process并从列表中选择您的进程
如果你说的"under VS"是指让Visual Studio能够调试外部进程,你可能要考虑"Attach to process "策略。
http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx