1. 程式人生 > >C# 執行一個程式並且等待其退出

C# 執行一個程式並且等待其退出

//獲取一個已中斷程序的退出程式碼,非零表示成功,零表示失敗。
        //引數hProcess,想獲取退出程式碼的一個程序的控制代碼,引數lpExitCode,用於裝載程序退出程式碼的一個長整數變數。
        [DllImport("Kernel32.dll")]
        static extern bool GetExitCodeProcess(System.IntPtr hProcess, ref uint lpExitCode);

        #endregion

        static public bool RunAndWait(string argm,bool IsShow)
        {
            STARTUPINFO sInfo = new STARTUPINFO();
            PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION();

            if (!CreateProcess(null, new StringBuilder(argm), null, null, false, 0, null, null, ref sInfo, ref pInfo))
            {
                throw new Exception("呼叫失敗");
            }
            uint i = 0;
            WaitForSingleObject(pInfo.hProcess, int.MaxValue);
            GetExitCodeProcess(pInfo.hProcess, ref i);
            CloseHandle(pInfo.hProcess);
            CloseHandle(pInfo.hThread);
            return false;
        }
        private Process proc = null;