[C#] 啟動應用程式並且傳入參數

  • 79344
  • 0

摘要:[C#] 啟動應用程式並且傳入參數

Introduction

有時候我們會使用一個啟動器去檢查有沒有最新的應用程式,檢查完了,就要啟動應用程式,

並且傳入相關的資訊;這邊小弟紀錄自己的方法,若是有其他方法,希望前輩們指教。

 

Example

sample1 : 啟動表單應用程式

1.表單程式碼

Program.cs

namespace ApplicationDemo {
    static class Program {
        /// <summary>
        /// 應用程式的主要進入點。
        /// </summary>
        [STAThread]
        //加入傳入參數
        static void Main(string[] args) {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);           
            if (args.Length == 0) {
                Application.Run(new Form1());
            } else {
                Application.Run(new Form1(args[0].ToString()));
            }
        }
    }
}

Form1.cs

namespace ApplicationDemo {
    public partial class Form1 : Form {
        private string _args;
        public Form1() {
            InitializeComponent();
        }

        public Form1(string value) {
            InitializeComponent();
            if (!string.IsNullOrEmpty(value)) {
                _args = value;
            }
        }

        private void btnShowArgs_Click(object sender, EventArgs e) {
            MessageBox.Show(_args);
        }
    }
}

 

2.啟動器程式碼

 

class Program {
        static void Main(string[] args) {
            //指定應用程式路徑
            string target = Environment.CurrentDirectory + @"\ApplicationDoem.exe";

            //方法一
            //Process.Start(target, "我是參數");

            //方法二
            ProcessStartInfo pInfo = new ProcessStartInfo(target);
            pInfo.Arguments = "我是參數";
            using (Process p = new Process()) {            
                p.StartInfo = pInfo;
                p.Start();
            }

            Console.ReadKey();
        }
    }

 

執行結果

 

sample2 : 啟動 Console 應用程式

1.欲啟動的應用程式碼

namespace StartConsoleApplication {
    class Program {
        static void Main(string[] args) {
            if (args != null && args.Length > 0) {
                //印出程式的名稱
                Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
                //印出傳入的參數
                Console.WriteLine(args[0].ToString());
            }
            Console.ReadKey();
        }
    }
}

 

2.欲啟動的應用程式碼

namespace ConsoleApplication20091226 {
    class Program {
        static void Main(string[] args) {
            //指定應用程式路徑
            //string target = Environment.CurrentDirectory + @"\ApplicationDoem.exe";
            string target = Environment.CurrentDirectory + @"\StartConsoleApplication.exe";

            //方法一
            //Process.Start(target, "我是參數");

            //方法二
            ProcessStartInfo pInfo = new ProcessStartInfo(target);
            pInfo.Arguments = "我是參數";
            using (Process p = new Process()) {            
                p.StartInfo = pInfo;
                p.Start();
            }

            Console.ReadKey();
        }
    }
}

執行結果

 

Link

Process 成員
System.Diagnostics 命名空間
Start
ProcessStartInfo
CloseMainWindow
Kill
ProcessThread

 

完整程式碼

ConsoleApplication20091226.rar

三小俠  小弟獻醜,歡迎指教