2010-05-11 124 views
4

我有一個應用程序,並從這個應用程序,我必須通過關閉當前的應用程序啓動另一個進程,並在該過程完成後再次啓動應用程序。的流程如下,假設我有一個應用程序APP.EXE,和另一個應用程序another.exe,所以我必須做如下:如何停止應用程序?

1)啓動APP.EXE

2)停止/關閉應用程序。 exe文件,並開始從another.exe APP.EXE

3)當another.exe完成之後,停止/關機another.exe和another.exe

任何APP.EXE開始,請給我提供的一些如何線索做它?

+2

由於你的問題是關於啓動一個應用程序,而不是停止它,也許你應該重新說明問題的標題。 – 2010-05-11 14:14:16

+0

如果您擔心another.exe會在app.exe完成關閉之前開始執行某些操作,則可以使用全局互斥鎖來防止此問題。如果你不希望這干擾其他實例,你可以隨機生成互斥體的名稱並將其作爲參數傳遞給another.exe,但將互斥體的名稱作爲命令行參數感覺非常錯誤。 – Brian 2010-05-11 14:24:49

回答

5

您需要在「another.exe」重新啓動「app.exe」才能退出,或者讓第三個程序監控前兩個並在「a​​nother.exe」退出時重新啓動「app.exe」。

因此,要麼:

  1. 「APP.EXE」 開始
  2. 「APP.EXE」 產卵 「another.exe」,然後退出
  3. 「another.exe」 開始
  4. 「 another.exe」產卵 「APP.EXE」,然後退出

或:

  1. 「MONITOR.EXE」 開始
  2. 「APP.EXE」 開始
  3. 「APP.EXE」 退出
  4. 「MONITOR.EXE」 檢測 「APP.EXE」 退出,併產卵「another.exe 「
  5. 」another.exe「 開始
  6. 」another.exe「 退出
  7. 」MONITOR.EXE「 檢測 」another.exe「 退出,併產卵 」APP.EXE「

如果「app.exe」應該還啓動 「another.exe」,這裏的變體:

  1. 「APP.EXE」 開始
  2. 「APP.EXE」 產卵 「MONITOR.EXE」 和 「another.exe」,然後退出
  3. 「another.exe」 開始
  4. 「another.exe」 退出
  5. 「MONITOR.EXE」 檢測 「another.exe」 退出,併產卵 「APP.EXE」,然後退出
+0

對於monitor.exe爲+1。這與我在看到這個答案時輸入的內容非常相似。 :-) – 2010-05-11 14:13:50

+0

如果任何受監控的進程意外死亡,那麼情況如何? 「monitor.exe」將如何確定進程終止是失敗,而不是預期的正常終止?如果前一個實際沒有真正完成其任務,那麼備選過程可能不會啓動 - 您需要在監視過程中建立某種檢查以查找「良好」終止事件(例如,零回程代碼)在開始其他... – 2010-05-11 15:52:16

0

你什麼需要是第三個EXE,停止/開始你的主要應用程序ication。一旦app.exe被關閉,它不能執行任何操作。

所以請嘗試以下操作:

寫applicationSwitcher.exe,可以幫助你打開/關閉應用程序並切換到主應用程序。

+0

沒有我只能使用這兩個應用程序... – 2010-05-11 14:21:25

1

這裏如何停止當前進程

Process.GetCurrentProcess().Close(); 

當然稱它爲一旦你與

Process.Start(...). 
+0

因爲我已經提到 「當然,一旦你已經開始another.exe與」...... 請再次閱讀答案;) – Incognito 2010-05-11 14:19:50

+0

當前進程啓動另一個進程,並且此進程停止第一個進程。 – 2010-05-11 14:20:42

1

開始another.exe我覺得這是你找什麼

Process.Start("My Process"); 

      Process processToClose = Process.GetProcessById(your Process ID); 
      processToClose.Kill(); 

記得包括:

Using System.Diagnostics; 

如果這些不適合您的需求,請查看Process類中的其他方法,我相信一定會引起您的注意。