.net教學筆記整理[如何傳入外來參數(parameters)到執行檔exe中]

前言:
我想很多大大也試過於Windows跑執行檔的時候可以傳參數, 例如 example.exe resolution=1280*1024,今天有同事問我順便跟各位大大分享一下小弟的寫法:
  1. 先開一個專案(exeparameters),類型為Winform,建立後直接在設計畫面點兩下,進到Coding畫面。

  2. 打開後打概會看到以下的Code
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace exeparameters
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    
    

  3. 在public Form1()這一句我們可以看到這個執行檔並不能接受任何參數。先把Form1改裝變成可接受string[]陣列:
            public Form1(string[] args)
            {
                InitializeComponent();
            }
    

  4. 接下來把外面傳來的變數轉成內部使用變數
  5.         string[] myParameters;
            public Form1(string[] args)
            {
                InitializeComponent();
                myParameters = args;
            }

  6. 最後打開Program.cs檔案, 把
  7.         static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
    轉為
            static void Main(string[] args)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1(args));
            }
    

    你可能會有疑問,為什麼連Program.cs看起來沒有關係的檔案也要轉成可以接收string[]呢? 這是因為Winform初始化的時候會先到Program.cs查看第一張運行的是那一張form, 所以program.cs是執行檔最早的切入點。即是說如果要從外部傳入參數要先傳給Program.cs,然後Program.cs才會把參數值傳到form1那裡。

  8. 除錯之前要先設定輸入參數,不然測試的時候永遠沒有辦法傳參數到程式裡。
    在方案總管中按下右鍵,選擇屬性


    進入"偵錯"分頁,在"命令列的引數"中輸入要傳遞的參數,儲存後按F5。


  9. myParameters有資料,表示成功傳入參數囉。

Popular posts from this blog

[SQL SERVER] 找出LOCK方法懶人包

[SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗

[Windows7] 跨距磁碟區, 等量磁碟區, 鏡像磁碟區之區別