2012-11-01 128 views
-1

我想从C#运行几个Windows程序。我将如何做到这一点?从我一直在寻找了,它是与的System.Diagnostics.Process的启动方法C#中的命令行命令

会只是我使用

System.Diagnostics.Process; 

然后键入

start("Command to be executed"); 

或者我不正确地看着这个问题?

C#的新手。

+0

您是否检查过[文档](http://msdn.microsoft.com/de-de/library/53ezey2s(v = vs.100).aspx)? – GameScripting

+3

您似乎已经完成了答案,但实际上并未尝试实施。为什么不? – ean5533

+0

因为打字“开始”给了我一条波浪线。 –

回答

1

事情是:基本上“要执行的命令”部分是您将在命令提示符下键入的内容。例如:

Process.Start("C:\Programs\programFile.exe", 
       "/arg1='This is an argument' -arg2=anotherArgument someOtherArgument"); 

程序的入口点(该文件位于“C:\程序\ programFile.exe”)将收到其主要方法如下参数列表:

args[0] = "/arg1='This is an argument'" 
args[1] = "-arg2=anotherArgument" 
args[2] = "someOtherArgument" 

这种将参数作为命令行传递的方式显然不是最大的格式,但它始终在做这项工作。

+1

除了你不应该传递参数给可执行文件。使用Start的适当超载。 –

+0

你说得对,只是更正 – fernandoespinosa

0
// Start Internet Explorer. Defaults to the home page. 
Process.Start("IExplore.exe"); 

// Display the contents of the favorites folder in the browser. 
Process.Start(myFavoritesPath); 

MSDN

2

根据您的意见,似乎你不熟悉 面向对象编程 命名空间和类。让我们分解它。

Process是一个类,是.NET框架的一部分。 Process已收集方法,其中一些方法是static方法。 Start是这些静态方法之一。有必要的,以便两件供您使用Process.Start

  1. 编译器需要知道什么是Process。您可以通过将using System.Diagnostics;添加到类文件的顶部,将该信息提供给编译器。这告诉编译器寻找System.Diagnostics命名空间中的类,这是Process所在的位置。
  2. 您需要明确告诉编译器您正在调用名为Start的方法,该方法属于进程类的一部分。您可以使用Process.Start()来完成此操作。或者在你的情况,Process.Start("Command to be executed");

有两个原因,为什么你不能只是输入start("Command to be executed")

  1. start,以小写的“s”,是不一样的Start用大写的“S” 。 C#是一个区分大小写的语言。
  2. 如果不预先调用具有特定类名称的方法调用,则编译器将在您自己的类中查找该方法,并且当它找不到它时,它会告诉您有关该方法的信息。
+0

现在我发现我的答案中没有任何内容与面向对象编程有关,而只是名称空间和类。好吧。 – ean5533