using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; namespace AutoUpdate.Helper { public class ProcessHelper { private static ProcessHelper instance; public static ProcessHelper Instance { get { if (instance == null) instance = new ProcessHelper(); return ProcessHelper.instance; } } /// <summary> /// 關閉進程 /// </summary> /// <param name="processName">進程名</param> public void KillProcessByName(string processName) { try { Process[] myproc = Process.GetProcesses(); foreach (Process item in myproc) { if (item.ProcessName == processName) { item.CloseMainWindow(); item.Kill(); } } } catch { return; } } /// <summary> /// 啟動進程 /// </summary> /// <param name="processName">進程名,完全限定名</param> public void StartProcessByName(string processName) { System.Diagnostics.Process.Start(processName); //Process process = new Process();//聲明一個進程類對象 //process.StartInfo.FileName = processName;//Application.StartupPath + "\\AutoUpdate.exe"; //process.Start(); } } }
//初始路徑 + 自動更新程序名稱 + 主程序名稱 string param = fullPath + "," + "AutoUpdate\\AutoUpdate.exe," //自動更新程序 + "Debug\\AutoUpdateApp.exe,"//主程序 + "Debug";//下載包 //AutoUpdate Process p = new Process();//聲明一個進程類對象 p.StartInfo.FileName = fullPath + "AutoUpdate\\AutoUpdate.exe"; p.StartInfo.UseShellExecute = true; p.StartInfo.Arguments = param;//第一個參數為需要下載的壓縮文件,第二個為需要啟動的程序 p.Start(); 注:被啟動的應用使用方式如下所示: /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main(string[] args) { Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //處理UI線程異常 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); //處理非UI線程異常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); //MessageBox.Show("參數==" + args[0]); InitVariable(args); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } private static void InitVariable(string[] args) { //VariableHelper.Instance.UpdateExeDir = ConfigurationManager.AppSettings["UpdateExeDir"]; string[] param = args[0].Split(','); VarHelper.Instance.InitPath = param[0]; VarHelper.Instance.AutoUpdateExe = param[1]; VarHelper.Instance.MainExe = param[2]; VarHelper.Instance.DownDir = param[3]; }