本文转载自:http://blog.csdn.net/lysc_forever/article/details/38356007

首先,我要仔细的声明下,本文讲的是接受命令行参数,让程序启动。而不是启动那个黑黑的框。。。我要实现的效果和它么有关系

网上那些千篇一律,只管Ctrl+C,Ctrl+V,采集来的文章,本人已经深受其害,浪费了不少时间!BS~~

先看下这篇文章:Winform程序接收命令行参数。一看标题,恩…和我的想法一样,不过一看内容,大为失望。不过呢,这里既然出现了2个API函数,先测试下,收藏着。

/// <summary>
/// 启动控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
/// <summary>
/// 释放(关闭)控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();

在WinForm中调用黑框(控制台),就可以用此来实现。具体的使用…自己实践吧…

现在说正题,说明下我要实现的功能:

举个例子,在cmd.exe下,我们输入shutdown,这个命令可以用来重启系统,关闭系统,等等。它有一系列的参数可选:

我们可以在C:\Windows\System32\下找到shutdown.exe这个Exe可执行文件。这个程序接受命令行参数,当参数符合一个内置参数时,执行某个操作。

我们就是要实现这种功能!这样的程序可以在任何一个项目中使用,通过System.Diagnostics.Process.Start("你的程序.exe 参数1")。

一般情况下,每个项目都有一个Main函数,它是整个程序的入口点,那么参数也肯定在这里被传递!

默认的Main函数:

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

我们只需改成这样:

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length == )
Application.Run(new Form1());
else
Application.Run(new Form1(args));
}

Form1窗体的构造:

string[] args=null;
public Form1()
{
InitializeComponent();
}
public Form1(string[] args)
{
InitializeComponent();
this.args = args;
}

真的是很简单很简单的几行代码。。。我们有了args参数,剩下的代码。。。看你的需求咯。

System.Diagnostics.Process.Start("程序的路径", "参数1 参数2");
第一个参数是aaa.exe 的路径,第二个参数是用空格分开的两个参数组成的字符串。
aaa.exe中的main方法写做
static void Main(string[] args)
用Process.Start启动aaa.exe时main方法的args参数就是Process.Start传入参数用转换成的长度为2的数组

(转)C#_WinForm接收命令行参数的更多相关文章

  1. C#_WinForm接收命令行参数

    C#_WinForm接收命令行参数 2014-08-03 10:17 534人阅读 评论(0) 收藏 举报 首先,我要仔细的声明下,本文讲的是接受命令行参数,让程序启动.而不是启动那个黑黑的框...我 ...

  2. 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子

    一:自定义实现InputFormat *数据源来自于内存 *1.InputFormat是用于处理各种数据源的,下面是实现InputFormat,数据源是来自于内存. *1.1 在程序的job.setI ...

  3. Spring Boot程序接收命令行参数

    Spring Boot程序接收命令行参数 输入一行,回车,触发一次.如果想要调用service层,也是可以,能调用service层,就可以做很多事,触发一次就好比调用了一次http接口一样 packa ...

  4. 让browserify接收命令行参数,在打包时parse yml配置文件

    功能需求: 1用browserify把各种js打包成浏览器端的1个bundle.js,含有yml配置文件 约束: 1 yml配置文件不在当前工程里(现在还不知道放哪里,以后也会变),希望在打包时,用命 ...

  5. MFC接收命令行参数的三种方法

    方法一: CString sCmdline = ::GetCommandLine(); AfxMessageBox(sCmdline); 将获取到 "C:\test\app.exe -1 - ...

  6. Python命令行参数sys.argv[]

    学习C语言的时候就没弄明白命令行参数的用法,在学习Pyton 的时候又遇到了命令行参数,在这里稍微学习了一下,稍微明白了一些在这里做个记录方便后面回顾复习. Sys.argv[]是用来获取命令行参数的 ...

  7. python命令行参数解析模块argparse和docopt

    http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...

  8. Golang: 打印命令行参数

    记得最早在学校机房学习 Java 时,照着书上的例子,写一个最简单 main 方法,当程序运行并在屏幕上打印出 hello world 时,内心竟有种莫名的激动,相信很多人都有这种经历吧. 不管学什么 ...

  9. 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数

    我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数 ...

随机推荐

  1. [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)

    [多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...

  2. Spark出现java.lang.stackoverflowerror的解决方法

    正在测试的程序需要多次迭代(400+次),每次迭代有复杂的运算 迭代到100多次的时候报java.lang.stackoverflowerror的错误 解决方法:先checkpoint()再count ...

  3. HNUSTOJ-1258 Time

    1258: Time 时间限制: 1 Sec  内存限制: 128 MB提交: 16  解决: 11[提交][状态][讨论版] 题目描述 Digital clock use 4 digits to e ...

  4. MySQL explain,type分析(转)

    问题:explain结果中的type字段代表什么意思? MySQL的官网解释非常简洁,只用了3个单词:连接类型(the join type).它描述了找到所需数据使用的扫描方式. 最为常见的扫描方式有 ...

  5. 【NOI2007】项链工厂 ——老题新做.jpg

    第一次是用 ODT 过的...(虽说跑得飞慢但它就是能过) 而且还写了发题解... 第二次是在考场上碰到了这道题,然后居然打了线段树,各种 bug 直接让代码爆零 但还是补好了代码重新交了一发,发现跑 ...

  6. SpringMVC+Spring4+Mybatis3

    http://blog.csdn.net/jiuqiyuliang/article/details/45286191 http://blog.csdn.net/jiuqiyuliang/article ...

  7. 解决HTML乱码

    转自:https://blog.csdn.net/yuxisanno139/article/details/80675426

  8. Java多线程(1)

    线程与进程 进程:程序的执行过程 线程:线程共享进程的资源 Java多线程 实现的方式 继承Tread类:使用getName()获取当前线程名 实现Runnable接口:Thread.currentT ...

  9. Spring基础19——Spring中几种注解的区别

    1.@Autowired:注解是用来装配bean的,需要注入的bean必须是已经被IOC容器创建的bean,这个注解是利用类型装配的,如果容器中出现一个以上要装配的类或其子类就需要用@Qualifie ...

  10. FPGA异步时钟系统中信号处理之单比特信号

    有些东西当你习以为常而不去深思熟虑的时候,致命的错误就会因此埋下!      FPGA开发中难免会遇到跨时钟域处理的问题,而对于单比特信号,我会不假思索的回答:打两拍不久解决了吗?但是事实时,这佯作的 ...