我如何从我的程序开始一个过程,并由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下?

我如何从我的程序开始一个过程,并由visual studio控制

您返回的进程具有正在运行的进程的句柄。您可以在成员变量中而不是在局部变量中保存它,并在窗体关闭时终止进程。

http://msdn.microsoft.com/en-us/library/e8zac0ca.aspx

您可以更改应用程序调试的开始动作

    右键单击你的项目性>
  1. 启动外部程序

并设置要启动的程序。

如果您想以编程方式附加到另一个实例,可以在这里找到重复的问题:

  • 如何将进程附加到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

相关文章: