【问题标题】:Process.Start does not open applicationsProcess.Start 不打开应用程序
【发布时间】:2021-12-18 22:00:35
【问题描述】:

如何使用以下代码启动 2 个进程:

Process.Start(@"D:\Clients\Client1\program.exe");
Process.Start(@"D:\Clients\Client2\program.exe");

路由正常,第一个进程总是打开

两个应用程序都是一样的,第一个应用程序为我打开成功,但第二个应用程序没有打开。 对于我在详细信息页面的任务管理器中注意到的第二个应用程序,该应用程序出现了几秒钟然后消失并且没有打开 如果我手动打开应用程序,它可以工作。

我对如何使用 Process.Start () 启动应用程序感兴趣?

【问题讨论】:

  • 您是否知道该应用程序在任何时候都只允许其自身的一个实例运行
  • @Steve,我不知道,我只知道如果我手动运行它对我有用
  • 如果您创建一个启动这两个程序的 BAT 文件(或 CMD 文件),一个接一个地启动(就像您在上面所做的那样),您会看到相同的行为吗? @echo offD:\Clients\Client1\program.exeD:\Clients\Client2\program.exe 之类的东西在不同的行上。
  • 顺便说一句,如果我的 BAT 文件测试显示批处理文件发生了相同的行为,那么问题出在program.exe。可能(如@Steve)指出该程序只允许运行单个实例。也可能是程序试图获得某个资源的排他锁。它第一次成功,但第二次失败并出现未捕获的异常。如果是这种情况,您可能会在事件日志(Windows 事件日志)中看到一些提示
  • @Flydog57 我尝试使用 .bat 文件运行它们,并且只打开了一个应用程序实例。谢谢

标签: c# system.diagnostics


【解决方案1】:

你能不能试试用这个方法看看能不能解决你的问题:

public static void StartApplication(string applicationName, string argument = "", bool useShellExecute = true, bool createNoWindow = false)
{
  Process task = new Process
  {
    StartInfo =
    {
      UseShellExecute = useShellExecute,
      FileName = applicationName,
      Arguments = argument,
      CreateNoWindow = createNoWindow
    }
  };

  task.Start();
}

你会这样使用它:

StartApplication(@"D:\Clients\Client1\program.exe");
StartApplication(@"D:\Clients\Client2\program.exe");

【讨论】:

  • 仅打开第一个实例。第二个应用程序在详细信息页面的任务管理器中可以看到它快速打开和关闭,当第二个实例应该启动时,焦点在第一个实例上。如果我手动打开它们,它对我有用
  • client1和client2的program.exe版本是否不同或相似?
  • 两者版本相同
  • 如果你有两个批处理文件,你一个接一个地启动批处理文件,你有两个应用程序吗?
  • 只打开一个应用程序
猜你喜欢
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2018-04-30
相关资源
最近更新 更多