首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过CMD启动程序时,判断进程是否已经结束

通过CMD启动程序时,判断进程是否已经结束
EN

Stack Overflow用户
提问于 2019-05-08 16:38:18
回答 1查看 42关注 0票数 0

正如我的标题所暗示的,我面临的问题是确定我开始使用命令行的程序是否已经关闭或结束。

我尝试了许多不同的方法来检查程序是否已经退出,使用进程ID甚至使用循环,不幸的是我似乎不能让它工作。我相信这是因为我创建了一个使用命令行启动程序的进程,而不是指向目录来启动程序的方法。我使用命令行的原因是,程序的路径位于程序(x86)中,我猜由于空间的原因,这对我不起作用。

启动应用程序的代码部分

代码语言:javascript
运行
复制
ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c cd / & /x & cd PROGRA~2 & cd Truvelo & cd DCM & start dcm.exe");
int exitCode;
using (Process proc = Process.Start(start))
{
proc.WaitForExit();
exitCode = proc.ExitCode;
}

我确实尝试过类似的方法,但是我认为它不起作用,因为我使用另一个进程使用命令行启动了应用程序。

代码语言:javascript
运行
复制
System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcessesByName(sProcessName);
  if (proc.Length > 0)
  {
      MessageBox.Show(String.Format("{0}is  running!", sProcessName), sProcessName);
  }
  else
  {
      MessageBox.Show(String.Format("{0}is not running!", sProcessName), sProcessName);

   }

我希望有人能以一种合乎逻辑的方式帮助我确定我是否关闭了应用程序,或者我正在编写的代码,以便知道应用程序何时启动,然后在应用程序关闭时立即告诉我

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 16:51:25

您正在使用cmd start,并且此命令不会等待启动的应用程序结束。您的proc变量是跟踪进程已启动,所以cmd不是dcm,而那个变量是在dcm启动时结束,而不是结束。

您可以添加/WAIT命令选项,也可以不使用start命令直接执行dcm.exe

代码语言:javascript
运行
复制
/c cd / & /x & cd PROGRA~2 & cd Truvelo & cd DCM & start dcm.exe /WAIT

/c cd / & /x & cd PROGRA~2 & cd Truvelo & cd DCM & dcm.exe

或者根本不使用cmd,直接从c#启动dcm:

代码语言:javascript
运行
复制
new ProcessStartInfo(@"C:\Program Files (x86)\Truvelo\DCM\dcm.exe")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56036695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档