标签:MainFrm WinFrm C# args 程序 Application 参数 构造函数
通过构造函数的方法实现WinFrm程序开启时接收参数
在项目开发过程中,有时候我们需要获取程序开启时的参数,进而实现进一步的自动处理。
比如,我们通过运行(Win+R)执行如下命令:
C:\tmp\1.exe ps1 ps2 ps3...
我们希望获取程序1.exe的入口参数,即ps1 ps2 ps3 ...,进而根据不同的参数,对相关业务逻辑进行不同的自动处理,那么我们如何实现呢?
两步实现
接下来我们将通过如下两步来实现:
A、增加主窗体构造函数
public MainFrm() { InitializeComponent(); } //-----------设置窗体的构造函数用于窗体入口传参-----------// string[] args = null; public MainFrm(string[] args) { InitializeComponent(); this.args = args; }
B、重写Main函数方法
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
标签:MainFrm,WinFrm,C#,args,程序,Application,参数,构造函数 来源: https://www.cnblogs.com/jeremywucnblog/p/12344066.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。