C# - 通过构造函数的方法实现WinFrm程序开启时接收参数

通过构造函数的方法实现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/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/jeremywucnblog/p/12344066.html

时间: 2024-10-16 17:47:21

C# - 通过构造函数的方法实现WinFrm程序开启时接收参数的相关文章

C/C++程序终止时执行的函数——atexit()函数详解

很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束.在程序的某个地方用exit()结束程序.用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理.方法就是用atexit()函数来注册程序正常终止时要被调用的函数. atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数.atexit()的函数原型是:#include <cstdlib

构造函数的方法和实例

function User(name, age) {    //构造函数模式 this.name = name; this.age = age; this.show = function () { return this.name  + ' '+this.age; }; } 要用时候用new运算符就可以了 var user1 = new User('小明', 30); 使用构造函数的方法,既解决了重复实例化的问题,又解决对象识别的问题. 要创建User对象的新实例,就要使用new操作符,使用这个

实战基础技能(02)-----------类,属性,构造函数和方法打死都要快速区分

一:做项目时经常会看见很对自定义的类,一定要快速的识别才能正确的理解项目代码 二:区分 类:很好区分,有Class修饰 方法:有返回值的描述,新的方法名 构造函数:没有返回值,有类名 属性:主要是get 和set标志,可能会有自定义的类型有一定的迷惑性 实战基础技能(02)-----------类,属性,构造函数和方法打死都要快速区分,布布扣,bubuko.com

设计模式 模版方法模式 展现程序员的一天

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/26276093 继续设计模式~ 模版方法模式 老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤. 简单看下定义,模版方法定义了一个算法的步骤,并且允许子类为一个或多个步骤提供实现.定义还算清晰,下面来个例子展示下本公司的上班情况(纯属娱乐,如有雷同,请对号入座).简单描述一下:本公司有程序猿.测试

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序

新建一个XML文件: djangochina_socket.xml,将它放在/data/www/org_management目录下: Nginx采用8077端口与uWSGI通讯,请确保此端口没有被其它程序采用 <uwsgi> <socket>:8077</socket> <chdir>/data/www/org_management</chdir> <module>org_management.wsgi</module>

吉首大学_编译原理实验题_基于预測方法的语法分析程序的设计【通过代码】

一.实验要求 实验二 基于预測方法的语法分析程序的设计 一.实验目的 了解预測分析器的基本构成及用自顶向下的预測法对表达式进行语法分析的方法,掌握预測语法分析程序的手工构造方法. 二.实验内容 1.了解编译程序的基于预測方法的语法分析过程. 2.依据预測分析原理设计一个基于预測方法的语法分析程序. 三.实验要求 对给定文法G[S]: S->AT       A->BU     T->+AT|$      U->*BU|$    B->(S)|m 当中,$表示空串. 1.推断上

使用Nginx+uWSGI+Django方法部署Django程序(下)

在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并在最后,会较为完整的阐述本社区的部署方法. 本文大纲: 环境介绍 配置uWSGI 配置Nginx Nginx+uWSGI+Django的实现方式 一些建

【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下)

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下) By Django中国社区 at 2013-05-18 04:38 在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并

对应用程序启动时所有方法的调用顺序分析

一个应用程序的启动过程要包括代理的创建,控制器的加载和控制器view的加载,这其中有很多关于生命周期的方法,每个方法都是有先后顺序的,如果调用顺序拿不准,或者某段代码写的方法不恰当,就会遇到各种奇葩问题.本文不怕麻烦的在几乎所有启动时要调用的方法里都用了 __FUNCTION__ 打印.结果还有有些地方出人意料的 如果你不是在董铂然博客园看到本文,请点击查看原文 首先回顾一下应用程序的启动过程 ①.先加载Main函数 ②.在Main函数里的 UIApplicationMain方法中,创建Appl