等待进程结束? [VS9 C ++]

时间:2011-11-05 01:00:53

标签: c++ process

在我的系统上有一个运行的应用程序(App.exe),但有时会终止(优雅且期待)。与此同时,我有另一个应用程序,当App.exe停止时,需要执行某些任务。所以我需要一种从我的应用程序监视App.exe的方法。

以下是我想要完成的事情

If (App.exe is running wait 360 seconds for it to terminate)
   if (App.exe is not running anymore)
      do the work I need to do when App.exe is NOT running

所以,他们的KEY是:

  • 如何评估App.exe是否正在运行
  • 如何等待360秒(如果它仍在运行)

现在这不是很难,如果我的应用程序是onw启动/ spwaned App.exe(使用CreateProcess和WaitForExit的东西),但在这种情况下我不是控制代理...所以我如何监视看到如果App.exe仍然在运行并因此等待(在一段时间内X),以便在执行特定操作之前结束它吗?

非常感谢任何提示,帮助或建议。 谢谢,

3 个答案:

答案 0 :(得分:1)

您可以使用ToolHelp API(带有TH32CS_SNAPPROCESS和Process32Next的CreateToolhelp32Snapshot)来获取任何正在运行的app.exe进程的进程ID。从那里你可以使用OpenProcess获取一个句柄,然后你可以使用等待终止。

答案 1 :(得分:0)

如何调用FindWindow来获取句柄(或者如果应用程序可以有多个实例,或者根据打开的文档更改其标题,则处理),调用GetWindowThreadProcessId和OpenProcess来转换它,然后调用WaitForSingleObject?

答案 2 :(得分:-1)

我相信你可以使用GetProcessesByName()。