我正在使用System.Diagnostic.Process調用另一個.exe。我正在創建一個應用程序,目的是在遠程服務器上運行。這個.exe有時會崩潰,並且彈出信息會停止整個過程 - > [應用程序名稱]遇到問題並被強制關閉。我試圖找到一種方法讓我的C#程序忽略此彈出框並繼續執行。如何從使用System.Diagnostic.Process執行的exe中禁用對話框?
0
A
回答
3
是否修復了被調用的.exe而不是選項的錯誤?
1
在這種情況下,當你的進程不能正常工作,你會看到多數民衆贊成在Windows默認的彈出,但如果你想知道這個過程成功與否跑那麼這段代碼會爲你工作
訂閱過程。退出事件,然後檢查Process.ExitCode:
public void StartProcess()
{
p.StartInfo.FileName = BasePath;
p.StartInfo.Arguments = args;
p.Start();
p.Exited += new EventHandler(Process_Exited);
}
void Process_Exited(object sender, EventArgs e)
{
var p = sender as Process;
if (p.ExitCode != 0)
MessageBox.Show(string.Format("Process failed: ExitCode = {0}", p.ExitCode));
}
+0
如果您不對EXE負責。這與我的問題相同,只是給他們留言,聯繫系統管理員並顯示退出代碼並將其登錄到會通知每個用戶的數據庫中。 –
0
恕我直言,運行這樣的越野車EXE最乾淨的方法是,啓動它在它給你的過程調試權限(您可能必須通過P/Invoke來顯式調用CreateProcess
與進程創建標誌中的DEBUG_PROCESS
標誌),然後有一個線程進程由WaitForDebugEvent
提供的調試事件;每當你得到一個未處理的最後一次異常時,你可以通知主線程,終止子進程(從而避免缺省的Windows異常處理程序)並在必要時重啓它,在其他情況下,只需調用ContinueDebugEvent
即可讓程序正常運行。
請注意,指向由WaitForDebugEvent
提供的「事件結構」的指針在C#中可能會很棘手。
編輯:幸運似乎有人提出對本機調試API一個不錯的託管包裝,看到here。
相關問題
- 1. org-模式 - 禁用elisp的代碼執行確認對話框
- 2. 對焦禁用對話框
- 3. 如何啓用 - 禁用對話框對象中的元素 - DLGEnabled
- 4. 如何禁用Apptentive「你愛_____?」對話框
- 5. 如何禁用USB權限對話框?
- 6. 如何禁用TinyMCE確認對話框
- 7. 如何禁用對話框 - alert()?
- 8. 如何禁用CKEditor對話框皮膚?
- 9. 如何禁用Facebook登錄對話框
- 10. 如何禁用Teraterm宏對話框
- 11. 如何使用fitnesse執行exe文件
- 12. 從EXE EXE執行EXE
- 13. 如何使用本地對話框執行apprequest
- 14. 如何使用輸入對話框執行SQL查詢
- 15. 如何從對話框使用WIX
- 16. 如何禁用警報對話框中的複選框
- 17. 禁用jQuery UI對話框
- 18. 禁用對話框webbrowser delphi
- 19. 禁用「X」在對話框
- 20. jQuery對話框+禁用
- 21. Android EditTextPreference禁用對話框
- 22. 如何使用對話框
- 23. 使用VBScript禁止對話框
- 24. 如何在對話框中使用枚舉對話框
- 25. 使用CreateProcess執行rundll32.exe
- 26. 從對話框中調用Web視圖客戶端不執行
- 27. 對話框X可以從jQuery UI 1.7對話框中禁用嗎?
- 28. 在jQuery對話框中禁用控件
- 29. 在IE10中禁用JQuery UI對話框
- 30. 無法使用System.Diagnostic.Process運行nbtstat
+1我在想同樣的事情。總是更好地解決根本原因,而不是在其他地方編碼 – Matt
+1是選項! – gbianchi
實際上我對.exe程序的代碼沒有責任,並且我想避免它可能遇到的任何問題 – ElCapitaine