• 桌面应用程序功能使用控制台分离


     class Program
        {
            static void Main(string[] args)
            {
                if (args.Length > 0)
                {
                    using (var fs = new FileStream(@"C:UsersAdministratorDesktop" + args[0] + ".txt", FileMode.Create, FileAccess.Write))
                    {
                        Console.WriteLine("hahahahahah");
                    }
                }
            }
        }
    

    很多时候,我们使用控制台测试程序的时候,很少会使用到args的,那么,args是怎么用的?

    当我们调用cmd的时候,就可以在空格后,写一个参数,执行这个控制台代码了。


    那么,如果我们要做一个功能,需要传入参数---执行----输出结果,那么:

    使用Net的库函数,调用cmd.exe,让cmd来启动ConsoleText.exe,并且传递参数:

     /// <summary>
            /// Program file
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                string str;
                RunCMD(@"F:FMOS_MVCWupiInvest_WcfWupiInvest_WcfConsoleTextinDebugConsoleText.exe " + ""HellowWord"", out str);
                Console.WriteLine(str);
                Console.ReadKey();
            }
            public static void RunCMD(string CMD, out string msg)
            {
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;//不显示程序窗口
                p.Start();//启动程序
    
                //向cmd窗口发送输入信息
                p.StandardInput.WriteLine(CMD);
    
                p.StandardInput.AutoFlush = true;
                p.StandardInput.WriteLine("exit");
                //向标准输入写入要执行的命令。这里使用&是批处理命令的符号,表示前面一个命令不管是否执行成功都执行后面(exit)命令,如果不执行exit命令,后面调用ReadToEnd()方法会假死
                //同类的符号还有&&和||前者表示必须前一个命令执行成功才会执行后面的命令,后者表示必须前一个命令执行失败才会执行后面的命令
    
    
    
                //获取cmd窗口的输出信息
                msg = p.StandardOutput.ReadToEnd();
                //StreamReader reader = p.StandardOutput;
                //string line=reader.ReadLine();
                //while (!reader.EndOfStream)
                //{
                //    str += line + "  ";
                //    line = reader.ReadLine();
                //}
    
                p.WaitForExit();//等待程序执行完退出进程
                p.Close();
    
            }
  • 相关阅读:
    Ubuntu执行命令时,不sudo提示权限不足,sudo提示找不到该命令
    ubuntu中执行可执行文件时报错“没有那个文件或目录”的解决办法(非权限问题)
    不同编译器下,定义一个地址按x字节对齐的数组
    对冒泡排序法的个人理解
    通过py2exe打包python程序的过程中,解决的一系列问题
    IAR工程名修改
    stm8编程tips(stvd)
    获取单片机唯一id(stm32获取单片机唯一id)
    按键抖动的处理方法(按键外部中断)
    stm32--USB(作为U盘)+FatFs的实现
  • 原文地址:https://www.cnblogs.com/pylblog/p/8513991.html
Copyright © 2020-2023  润新知