C#-関数を構築する方法でWinFrmプログラムのオープン時の受信パラメータを実現

4682 ワード

関数を構築する方法でWinFrmプログラムのオープン時の受信パラメータを実現する
プロジェクト開発の過程で、プログラムが開いたときのパラメータを取得し、さらに自動処理を実現する必要がある場合があります.
たとえば、次のコマンドを実行(Win+R)します.
C:\tmp\1.exe ps1 ps2 ps3...
プログラム1を取得したい.exeのエントリパラメータ、すなわちps 1 ps 2 ps 3...、さらに、異なるパラメータに基づいて、関連するビジネスロジックを異なる自動処理するには、どのように実現すればいいのでしょうか.
2ステップで実現
次に、次の2つのステップで実現します.
A、メインフォーム構築関数を追加する
public MainFrm()
{
     InitializeComponent();
}
//-----------                 -----------//
string[] args = null;
public MainFrm(string[] args)
{
     InitializeComponent();
     this.args = args;
}

B、Main関数の書き換え方法
static class Program
    {
        /// 
        ////// 
        [STAThread]
        //static void Main()
        //{
        //    Application.EnableVisualStyles();
        //    Application.SetCompatibleTextRenderingDefault(false);
        //    Application.Run(new MainFrm());
        //}

        //-----------              -----------// 
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if (args.Length == 0)
            {
                Application.Run(new MainFrm());
            }
            else
            {
                Application.Run(new MainFrm(args));
            }  
        }
    }

综上,Main函数作为程序的唯一入口,我们只需要通过对Main函数的入口参数进行判断,当用户启动程序时,如果包含了参数,那我们在创建MainFrm对象时,只需要将相应的字符参数数组放进去,MainFrm的构造函数会将字符数组中的数据接收到用户临时定义的字符数组中,便于后续的处理。

常见应用场景

A、程序调用程序

程序A调用程序B,B程序中包含对于入口参数相关的设置。

只需要在程序A中执行如下代码,程序B就会根据相关指令自动处理了。

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = @"C:\tmp\B.exe";
process.StartInfo.Arguments = "ps1 ps2 ps3";
process.Start();

B、Task任務計画
これは言うまでもなく、Oracleのjobsに似ています. 
友情はDelphi版を提供して、参考にすることができます:
Delphi-Windows自動計画タスクとParamStrの詳細
 
 
作者:Jeremy.Wu出典:https://www.cnblogs.com/jeremywucnblog/本文の著作権は著者とブログ園に共有され、転載を歓迎するが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.