从C#传递参数到控制台应用程序

时间:2010-10-21 07:07:47

标签: c#

我需要从另一个c#应用程序运行控制台应用程序,如何加载&从我的c#应用程序传递参数到控制台应用程序,以执行控制台应用程序。 是System.Diagnostics.ProcessStartInfo会有帮助吗?

3 个答案:

答案 0 :(得分:7)

使用ProcessStartInfo类

       ProcessStartInfo p = new ProcessStartInfo();
       p.Arguments = "your arguments";
       p.FileName = "Application or Document Name";
       Process.Start(p);





    public IList<string> GetMatchingWords(string word)
    {
        var list = new List<string>();

        int levelDepth = 0;
        if (string.IsNullOrEmpty(word))
            return list;

        var tempWord = word[0];
        var firstNode = RootNode.Childs.FirstOrDefault(x => x.Word[0].Equals(tempWord));

        if (firstNode == null)
        {
            return list;
        }


        var nodePath = new Queue<TrieNode>();

        var sb = new StringBuilder();
        sb.Append(firstNode.Word);



        while (firstNode != null)
        {


            levelDepth++;

            if (levelDepth == word.Length)
            {
                break;
            }



            tempWord = word[levelDepth];
              firstNode = firstNode.Childs.FirstOrDefault(x => x.Word[0].Equals(tempWord));

              sb.Append(firstNode.Word);

        }

        if(firstNode!=null)
            nodePath.Enqueue(firstNode);


        originalValue = sb.ToString();


        while (nodePath.Any())
        {
            var tempNode = nodePath.Dequeue();

            tempNode.IsParentNode = true;

            PopulateWords(tempNode, sb, ref list);

        }


        return list;
    }

    private void PopulateWords(TrieNode node,
         StringBuilder sb,ref List<string> list)
    {



        if (node.Childs.Any())
        {
            foreach (var temp in node.Childs)
            {
                if (node.IsParentNode)
                {
                    sb.Clear();
                    sb.Append(originalValue);
                }

                if (temp.Childs.Any())
                {

                    sb.Append(temp.Word);
                    PopulateWords(temp, sb, ref list);

                }
                else
                {
                    sb.Append(temp.Word);
                    list.Add(sb.ToString());
                }

            }
        }
        else
        {

            list.Add(sb.ToString());

        }


    }

答案 1 :(得分:3)

使用Process.Start,第二个参数是应用程序的参数:

Process.Start("IExplore.exe", "www.northwindtraders.com");

以上示例来自http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx。这包含有关如何启动流程的更多示例。

答案 2 :(得分:0)

我们可以通过两种方式将参数传递给控制台应用程序。在这里,我写了一个显示这两种方法的程序。我认为这将是非常有用的

using System;
using System.Diagnostics;
using System.ComponentModel;
namespace ProcessSample
{
    class ClsProcess
    {
        void OpenProcessWithArguments()
        {
            Process.Start("IExplore.exe", "www.google.com");
        }

        void OpenProcessWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "www.google.com";

            Process.Start(startInfo);
        }

        static void Main()
        {
            ClsProcess myProcess = new ClsProcess();

            myProcess.OpenProcessWithArguments();
            myProcess.OpenProcessWithStartInfo();
        }
    }
}