• C# 启动、关闭 Process


    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];
            }
    

      

      

    博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
  • 相关阅读:
    angularjs中ng-repeat-start与ng-repeat-end用法实例
    随笔 javascript-抽象工厂模式
    VMware一些使用心得
    oracle 12c的数据库导进 11g
    架构师基本功:消息队列
    如何提高工作效率
    oracle 12c 13姨
    架构师基本功:SOA
    autofac如何注册静态方法里的接口对象
    发布Java桌面程序
  • 原文地址:https://www.cnblogs.com/YYkun/p/14343521.html
Copyright © 2020-2023  润新知