processStartInfo 运行exe?

Posted

技术标签:

【中文标题】processStartInfo 运行exe?【英文标题】:processStartInfo run exe? 【发布时间】:2014-01-08 19:22:07 【问题描述】:

当你调用时:

ProcessStartInfo startInfo = new ProcessStartInfo("someExecutable.exe");

这实际上是运行someExecutable.exe 还是只是监控它?我基本上是在看看这是否可以用来读取已经运行的 exe 的输出,或者它是否会调用该 exe。

我正在尝试找到一种方法来监视和记录已经运行的 exe 中的一些值。

【问题讨论】:

【参考方案1】:

这实际上是运行 someExecutable.exe 还是仅仅监视它而死?

答案是既不是……也不是! MSDN article about the ProcessStartInfo 声明:

您可以使用 ProcessStartInfo 类更好地控制您启动的进程。您至少必须手动或使用构造函数设置 FileName 属性。

还有

ProcessStartInfo 与 Process 组件一起使用。当您使用 Process 类启动进程时,除了附加到正在运行的进程时可用的信息之外,您还可以访问进程信息。

使用 ProcessStartInfo 类,您既不能启动也不能监控进程。

但是根据您需要监控的内容(例如可执行文件的输出),您可以使用 ProcessStartInfo 类来重定向您正在执行的进程的输出以编程方式启动。为此,您需要设置 ProcessStartInfo 类的RedirectStandardOutput property。因此,假设您将以编程方式启动进程,您需要该类来允许/配置进程监控。

注释 MSDN 示例以澄清我的答案:

// Process is NOT started yet! process name is set
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
// Process is NOT started yet! process object is initialized with the process info like filename and so on. 
Process.Start(startInfo);
// Process is NOT started yet! process arguments are set. 
// The equivalent command line in a shell would be: c:\>IExplore.exe www.northwindtraders.com ENTER is NOT pressed yet!
startInfo.Arguments = "www.northwindtraders.com";
// NOW the process is executed/started => 
// c:\>IExplore.exe www.northwindtraders.com <= ENTER is pressed, process is started/running!
// c:\>
Process.Start(startInfo); 

【讨论】:

我知道属性,但我要问的是,如果我专门设置了 FileName 属性,这是否意味着它将运行 exe? @user3174707: - 设置 FileName 属性不会运行 exe!我添加了一个注释示例来澄清我的答案。

以上是关于processStartInfo 运行exe?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Vb程序运行exe文件

获取 cmd.exe 的当前工作目录

如何使用 C# 关闭 Autocad 中的文件以保持 acad.exe 运行?

C# 一个程序启动另一个程序,ProcessStartInfo.Arguments接收参数

将 ProcessStartInfo.WorkingDirectory 设置为 UNC 路径

C#执行EXE程序