【问题标题】:Open new instance of C# windows application打开 C# windows 应用程序的新实例
【发布时间】:2011-08-30 06:22:16
【问题描述】:

我在 Windows 环境中工作,我需要在运行应用程序时以编程方式打开我的应用程序的一个新实例,这可能吗?

我非常感谢任何指导或帮助。

【问题讨论】:

    标签: c# window instance


    【解决方案1】:

    试试这个:

    var info = new System.Diagnostics.ProcessStartInfo(Application.ExecutablePath);
    System.Diagnostics.Process.Start(info );
    

    【讨论】:

    • 再一次,不要硬编码路径。甚至只是通往 EXE 的路径。两个原因: 1) EXE 的名称可能会更改,如果不进行广泛的测试,将很难检测到由此产生的错误。 2) 不能保证工作目录在程序执行期间始终是应用程序的根目录。你不想依赖这种情况。
    • 更改为 Application.ExecutablePath
    • 有没有办法在monodevelop中做到这一点?没有名为Application.ExecutablePath的静态变量
    • 如果您使用的是 Monodevelop,请使用以下代码:System.Diagnostics.Process.Start(Environment.GetCommandLineArgs()[0]);
    【解决方案2】:
    System.Diagnostics.Process.Start(Application.ExecutablePath);
    

    对于 Winforms 应用程序。

    【讨论】:

      【解决方案3】:

      您可以使用Process.Start 方法:

      Process.Start(@"c:\work\myapp\foo.exe");
      

      如果您的应用程序需要接受参数:

      Process.Start(@"c:\work\myapp\foo.exe", "-a arg1 -b arg2");
      

      【讨论】:

      • 是的,但绝对不要硬编码路径。 (我意识到这可能仅用于示例目的,但无论如何都值得重复。)
      • @Cody Gray,当然,最好将路径外部化。
      【解决方案4】:

      您可以使用Process.Start() 方法启动任何应用程序。

      但是根据您想要做什么,直接使用您的一个应用程序中的类可能会更好,例如 .打开另一个应用程序中的窗口。

      【讨论】:

        【解决方案5】:

        当然!您已经创建了一个新的主项目类!

        您必须创建对项目的引用,然后您才能创建主表单实例!

        更新

        我的错!我知道您必须从第一个应用程序中调用第二个现有应用程序。

        【讨论】:

        • 什么是“主项目类”?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        相关资源
        最近更新 更多